On Wed, Jul 21, 2021 at 11:46 AM Gedare Bloom <ged...@rtems.org> wrote: > > On Wed, Jul 21, 2021 at 11:43 AM Gedare Bloom <ged...@rtems.org> wrote: > > > > Before we bake this into the API forever, I want to ask if "cause" is > > the right word to use here? Often, "interrupt cause" is thought of as > > a noun to mean what caused the interrupt, while the verb is usually > > "raise" or post, trigger, etc. Because "cause" is both a noun and a > > verb that mean something in this context, it may be better to use a > > different verb. English is pretty much terrible. > > > > I don't have a major problem with sticking to "cause" but thought I'd > > bring this up. > > > > On Mon, Jul 12, 2021 at 6:50 AM Sebastian Huber > > <sebastian.hu...@embedded-brains.de> wrote: > > > > > > Document the currently not implemented rtems_interrupt_cause() and > > > rtems_interrupt_clear(). > > > > > > Update #3269. > > > --- > > > cpukit/include/rtems/rtems/intr.h | 162 +++++++++++++++++++++++------- > > > 1 file changed, 125 insertions(+), 37 deletions(-) > > > > > > diff --git a/cpukit/include/rtems/rtems/intr.h > > > b/cpukit/include/rtems/rtems/intr.h > > > index 178cf342df..a8b1b892b5 100644 > > > --- a/cpukit/include/rtems/rtems/intr.h > > > +++ b/cpukit/include/rtems/rtems/intr.h > > > @@ -54,6 +54,7 @@ > > > #ifndef _RTEMS_RTEMS_INTR_H > > > #define _RTEMS_RTEMS_INTR_H > > > > > > +#include <stdint.h> > > > #include <rtems/rtems/status.h> > > > #include <rtems/score/basedefs.h> > > > #include <rtems/score/cpu.h> > > > @@ -99,7 +100,7 @@ typedef ISR_Handler rtems_isr; > > > * @ingroup RTEMSAPIClassicIntr > > > * > > > * @brief Interrupt service routines installed by > > > rtems_interrupt_catch() shall > > > - * have this function pointer type. > > > + * have this type. > > > */ > > > #if CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE > > > typedef ISR_Handler_entry rtems_isr_entry; > > > @@ -502,42 +503,6 @@ rtems_status_code rtems_interrupt_catch( > > > */ > > > #define rtems_interrupt_is_in_progress() _ISR_Is_in_progress() > > > > > > -/* Generated from spec:/rtems/intr/if/cause */ > > > - > > > -/** > > > - * @ingroup RTEMSAPIClassicIntr > > > - * > > > - * @brief Causes the interrupt. > > > - * > > > - * @param _vector is the vector number of the interrupt to cause. > > > - * > > > - * @par Constraints > > > - * @parblock > > > - * The following constraints apply to this directive: > > > - * > > > - * * The directive is not implemented. > > > - * @endparblock > > > - */ > > > -#define rtems_interrupt_cause( _vector ) do { } while ( 0 ) > > > - > > > -/* Generated from spec:/rtems/intr/if/clear */ > > > - > > > -/** > > > - * @ingroup RTEMSAPIClassicIntr > > > - * > > > - * @brief Clears the interrupt. > > > - * > > > - * @param _vector is the vector number of the interrupt to clear. > > > - * > > > - * @par Constraints > > > - * @parblock > > > - * The following constraints apply to this directive: > > > - * > > > - * * The directive is not implemented. > > > - * @endparblock > > > - */ > > > -#define rtems_interrupt_clear( _vector ) do { } while ( 0 ) > > > - > > > /* Generated from spec:/rtems/intr/if/lock-initialize */ > > > > > > /** > > > @@ -909,6 +874,129 @@ rtems_status_code rtems_interrupt_catch( > > > #define RTEMS_INTERRUPT_LOCK_REFERENCE( _designator, _target ) \ > > > ISR_LOCK_REFERENCE( _designator, _target ) > > > > > > +/* Generated from spec:/rtems/intr/if/cause */ > > > + > > > +/** > > > + * @ingroup RTEMSAPIClassicIntr > > > + * > > > + * @brief Causes the interrupt vector. > > > + * > > > + * @param vector is the number of the interrupt vector to cause. > > > + * > > > + * @retval ::RTEMS_SUCCESSFUL The requested operation was successful. > > > + * > > > + * @retval ::RTEMS_INVALID_ID There was no interrupt vector associated > > > with the > > > + * number specified by ``vector``. > > > + * > > > + * @retval ::RTEMS_UNSATISFIED The request to cause the interrupt vector > > > has > > > + * not been satisfied. > > > + * > > > + * @par Notes > > > + * The rtems_interrupt_get_attributes() directive may be used to check > > > if an > > > + * interrupt vector can be caused. > > > + * > > > + * @par Constraints > > > + * @parblock > > > + * The following constraints apply to this directive: > > > + * > > > + * * The directive may be called from within interrupt context. > > > + * > > > + * * The directive may be called from within device driver initialization > > > + * context. > > > + * > > > + * * The directive may be called from within task context. > > > + * > > > + * * The directive will not cause the calling task to be preempted. > > > + * @endparblock > > > + */ > > > +rtems_status_code rtems_interrupt_cause( rtems_vector_number vector ); > > > + > > > +/* Generated from spec:/rtems/intr/if/cause-on */ > > > + > > > +/** > > > + * @ingroup RTEMSAPIClassicIntr > > > + * > > > + * @brief Causes the interrupt vector on the processor. > > > + * > > > + * @param vector is the number of the interrupt vector to cause. > > > + * > > > + * @param cpu_index is the index of the target processor of the interrupt > > > + * vector to cause. > > > + * > > > + * @retval ::RTEMS_SUCCESSFUL The requested operation was successful. > > > + * > > > + * @retval ::RTEMS_INVALID_ID There was no interrupt vector associated > > > with the > > > + * number specified by ``vector``. > > > + * > > > + * @retval ::RTEMS_NOT_CONFIGURED The processor specified by > > > ``cpu_index`` was > > > + * not configured to be used by the application. > > > + * > > > + * @retval ::RTEMS_INCORRECT_STATE The processor specified by > > > ``cpu_index`` was > > > + * configured to be used by the application, however, it was not > > > online. > > > + * > > > + * @retval ::RTEMS_UNSATISFIED The request to cause the interrupt vector > > > has > > > + * not been satisfied. > > > + * > > > + * @par Notes > > > + * The rtems_interrupt_get_attributes() directive may be used to check > > > if an > > > + * interrupt vector can be caused on a processor. > > > + * > > > + * @par Constraints > > > + * @parblock > > > + * The following constraints apply to this directive: > > > + * > > > + * * The directive may be called from within interrupt context. > > > + * > > > + * * The directive may be called from within device driver initialization > > > + * context. > > > + * > > > + * * The directive may be called from within task context. > > > + * > > > + * * The directive will not cause the calling task to be preempted. > > > + * @endparblock > > > + */ > > > +rtems_status_code rtems_interrupt_cause_on( > > One more thing, should we specifically say "on_processor" or > something, to make it clear what this means? When I first read the > function name, I thought it is "cause on a condition" so I was > confused. > Another thought with this "cause_on" directive, should we have an opaque type for the cpu_index?
> > > + rtems_vector_number vector, > > > + uint32_t cpu_index > > > +); > > > + > > > +/* Generated from spec:/rtems/intr/if/clear */ > > > + > > > +/** > > > + * @ingroup RTEMSAPIClassicIntr > > > + * > > > + * @brief Clears the interrupt vector. > > > + * > > > + * @param vector is the number of the interrupt vector to clear. > > > + * > > > + * @retval ::RTEMS_SUCCESSFUL The requested operation was successful. > > > + * > > > + * @retval ::RTEMS_INVALID_ID There was no interrupt vector associated > > > with the > > > + * number specified by ``vector``. > > > + * > > > + * @retval ::RTEMS_UNSATISFIED The request to cause the interrupt vector > > > has > > > + * not been satisfied. > > > + * > > > + * @par Notes > > > + * The rtems_interrupt_get_attributes() directive may be used to check > > > if an > > > + * interrupt vector can be cleared. > > > + * > > > + * @par Constraints > > > + * @parblock > > > + * The following constraints apply to this directive: > > > + * > > > + * * The directive may be called from within interrupt context. > > > + * > > > + * * The directive may be called from within device driver initialization > > > + * context. > > > + * > > > + * * The directive may be called from within task context. > > > + * > > > + * * The directive will not cause the calling task to be preempted. > > > + * @endparblock > > > + */ > > > +rtems_status_code rtems_interrupt_clear( rtems_vector_number vector ); > > > + > > > #ifdef __cplusplus > > > } > > > #endif > > > -- > > > 2.26.2 > > > > > > _______________________________________________ > > > devel mailing list > > > devel@rtems.org > > > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel