Re: [PATCH 04/41] rtems: Add rtems_interrupt_cause_on()
On 21/07/2021 20:10, Gedare Bloom wrote: 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? In the RTEMS API we use uint32_t currently. I think this is in line with other numbers such as a pending message count. -- embedded brains GmbH Herr Sebastian HUBER Dornierstr. 4 82178 Puchheim Germany email: sebastian.hu...@embedded-brains.de phone: +49-89-18 94 741 - 16 fax: +49-89-18 94 741 - 08 Registergericht: Amtsgericht München Registernummer: HRB 157899 Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler Unsere Datenschutzerklärung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/ ___ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel
Re: [PATCH 04/41] rtems: Add rtems_interrupt_cause_on()
On Wed, Jul 21, 2021 at 11:46 AM Gedare Bloom wrote: > > On Wed, Jul 21, 2021 at 11:43 AM Gedare Bloom 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 > > 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 > > > #include > > > #include > > > #include > > > @@ -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 > > >
Re: [PATCH 04/41] rtems: Add rtems_interrupt_cause_on()
On 21/07/2021 19:43, Gedare Bloom 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. I just used the existing (not implemented) directive. We can also use rtems_interrupt_raise() (similar to the signal raise()). In this case we should remove rtems_interrupt_cause(). -- embedded brains GmbH Herr Sebastian HUBER Dornierstr. 4 82178 Puchheim Germany email: sebastian.hu...@embedded-brains.de phone: +49-89-18 94 741 - 16 fax: +49-89-18 94 741 - 08 Registergericht: Amtsgericht München Registernummer: HRB 157899 Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler Unsere Datenschutzerklärung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/ ___ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel
Re: [PATCH 04/41] rtems: Add rtems_interrupt_cause_on()
On Wed, Jul 21, 2021 at 11:43 AM Gedare Bloom 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 > 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 > > #include > > #include > > #include > > @@ -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 >
Re: [PATCH 04/41] rtems: Add rtems_interrupt_cause_on()
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 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 > #include > #include > #include > @@ -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 >
[PATCH 04/41] rtems: Add rtems_interrupt_cause_on()
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 #include #include #include @@ -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( + rtems_vector_number vector, + uint32_tcpu_index +); + +/* Generated from spec:/rtems/intr/if/clear */ + +/** + * @ingroup RTEMSAPIClassicIntr + * + * @brief Clears the interrupt vector. + * + * @param vector is the number