forked from Imagelibrary/rtems
@@ -289,6 +289,16 @@ typedef struct Per_CPU_Control {
|
|||||||
*/
|
*/
|
||||||
uint32_t isr_nest_level;
|
uint32_t isr_nest_level;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Indicetes if an ISR thread dispatch is disabled.
|
||||||
|
*
|
||||||
|
* This flag is context switched with each thread. It indicates that this
|
||||||
|
* thread has an interrupt stack frame on its stack. By using this flag, we
|
||||||
|
* can avoid nesting more interrupt dispatching attempts on a previously
|
||||||
|
* interrupted thread's stack.
|
||||||
|
*/
|
||||||
|
uint32_t isr_dispatch_disable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The thread dispatch critical section nesting counter which is used
|
* @brief The thread dispatch critical section nesting counter which is used
|
||||||
* to prevent context switches at inopportune moments.
|
* to prevent context switches at inopportune moments.
|
||||||
@@ -780,8 +790,10 @@ RTEMS_INLINE_ROUTINE struct _Thread_Control *_Thread_Get_executing( void )
|
|||||||
*/
|
*/
|
||||||
#define PER_CPU_ISR_NEST_LEVEL \
|
#define PER_CPU_ISR_NEST_LEVEL \
|
||||||
PER_CPU_END_STACK
|
PER_CPU_END_STACK
|
||||||
#define PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL \
|
#define PER_CPU_ISR_DISPATCH_DISABLE \
|
||||||
PER_CPU_ISR_NEST_LEVEL + 4
|
PER_CPU_ISR_NEST_LEVEL + 4
|
||||||
|
#define PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL \
|
||||||
|
PER_CPU_ISR_DISPATCH_DISABLE + 4
|
||||||
#define PER_CPU_OFFSET_EXECUTING \
|
#define PER_CPU_OFFSET_EXECUTING \
|
||||||
PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL + 4
|
PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL + 4
|
||||||
#define PER_CPU_OFFSET_HEIR \
|
#define PER_CPU_OFFSET_HEIR \
|
||||||
|
|||||||
@@ -83,6 +83,12 @@ RTEMS_STATIC_ASSERT(
|
|||||||
PER_CPU_ISR_NEST_LEVEL
|
PER_CPU_ISR_NEST_LEVEL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
RTEMS_STATIC_ASSERT(
|
||||||
|
offsetof(Per_CPU_Control, isr_dispatch_disable)
|
||||||
|
== PER_CPU_ISR_DISPATCH_DISABLE,
|
||||||
|
PER_CPU_ISR_DISPATCH_DISABLE
|
||||||
|
);
|
||||||
|
|
||||||
RTEMS_STATIC_ASSERT(
|
RTEMS_STATIC_ASSERT(
|
||||||
offsetof(Per_CPU_Control, thread_dispatch_disable_level)
|
offsetof(Per_CPU_Control, thread_dispatch_disable_level)
|
||||||
== PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL,
|
== PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL,
|
||||||
|
|||||||
Reference in New Issue
Block a user