forked from Imagelibrary/rtems
score: Refine system initialization order
This commit is contained in:
@@ -72,15 +72,25 @@ extern "C" {
|
|||||||
#define RTEMS_SYSINIT_CLASSIC_USER_TASKS 000706
|
#define RTEMS_SYSINIT_CLASSIC_USER_TASKS 000706
|
||||||
#define RTEMS_SYSINIT_POSIX_USER_THREADS 000707
|
#define RTEMS_SYSINIT_POSIX_USER_THREADS 000707
|
||||||
#define RTEMS_SYSINIT_STD_FILE_DESCRIPTORS 000800
|
#define RTEMS_SYSINIT_STD_FILE_DESCRIPTORS 000800
|
||||||
|
#define RTEMS_SYSINIT_LAST ffffff
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The value of each order define must consist of exactly two hexadecimal
|
* The value of each order define must consist of exactly two hexadecimal
|
||||||
* digits without a 0x-prefix. A 0x-prefix is concatenated with the module and
|
* digits without a 0x-prefix. A 0x-prefix is concatenated with the module and
|
||||||
* order values to form a proper integer literal.
|
* order values to form a proper integer literal.
|
||||||
*/
|
*/
|
||||||
#define RTEMS_SYSINIT_ORDER_FIRST 00
|
#define RTEMS_SYSINIT_ORDER_FIRST 00
|
||||||
#define RTEMS_SYSINIT_ORDER_MIDDLE 08
|
#define RTEMS_SYSINIT_ORDER_SECOND 01
|
||||||
#define RTEMS_SYSINIT_ORDER_LAST 0f
|
#define RTEMS_SYSINIT_ORDER_THIRD 02
|
||||||
|
#define RTEMS_SYSINIT_ORDER_FOURTH 03
|
||||||
|
#define RTEMS_SYSINIT_ORDER_FIFTH 04
|
||||||
|
#define RTEMS_SYSINIT_ORDER_SIXTH 05
|
||||||
|
#define RTEMS_SYSINIT_ORDER_SEVENTH 06
|
||||||
|
#define RTEMS_SYSINIT_ORDER_EIGHTH 07
|
||||||
|
#define RTEMS_SYSINIT_ORDER_NINETH 08
|
||||||
|
#define RTEMS_SYSINIT_ORDER_TENTH 09
|
||||||
|
#define RTEMS_SYSINIT_ORDER_MIDDLE 80
|
||||||
|
#define RTEMS_SYSINIT_ORDER_LAST ff
|
||||||
|
|
||||||
typedef void ( *rtems_sysinit_handler )( void );
|
typedef void ( *rtems_sysinit_handler )( void );
|
||||||
|
|
||||||
|
|||||||
@@ -143,6 +143,18 @@ typedef enum {
|
|||||||
#endif /* RTEMS_POSIX_API */
|
#endif /* RTEMS_POSIX_API */
|
||||||
STD_FILE_DESCRIPTORS_PRE,
|
STD_FILE_DESCRIPTORS_PRE,
|
||||||
STD_FILE_DESCRIPTORS_POST,
|
STD_FILE_DESCRIPTORS_POST,
|
||||||
|
LAST_FIRST,
|
||||||
|
LAST_SECOND,
|
||||||
|
LAST_THIRD,
|
||||||
|
LAST_FOURTH,
|
||||||
|
LAST_FIFTH,
|
||||||
|
LAST_SIXTH,
|
||||||
|
LAST_SEVENTH,
|
||||||
|
LAST_EIGHTH,
|
||||||
|
LAST_NINETH,
|
||||||
|
LAST_TENTH,
|
||||||
|
LAST_MIDDLE,
|
||||||
|
LAST_LAST,
|
||||||
INIT_TASK,
|
INIT_TASK,
|
||||||
DONE
|
DONE
|
||||||
} init_step;
|
} init_step;
|
||||||
@@ -165,6 +177,17 @@ typedef enum {
|
|||||||
); \
|
); \
|
||||||
static void x##_last(void)
|
static void x##_last(void)
|
||||||
|
|
||||||
|
#define LAST_STEP(x) \
|
||||||
|
static void last_##x(void) \
|
||||||
|
{ \
|
||||||
|
next_step(LAST_##x); \
|
||||||
|
} \
|
||||||
|
RTEMS_SYSINIT_ITEM( \
|
||||||
|
last_##x, \
|
||||||
|
RTEMS_SYSINIT_LAST, \
|
||||||
|
RTEMS_SYSINIT_ORDER_##x \
|
||||||
|
)
|
||||||
|
|
||||||
static init_step step;
|
static init_step step;
|
||||||
|
|
||||||
static void next_step(init_step expected)
|
static void next_step(init_step expected)
|
||||||
@@ -674,6 +697,19 @@ LAST(RTEMS_SYSINIT_STD_FILE_DESCRIPTORS)
|
|||||||
next_step(STD_FILE_DESCRIPTORS_POST);
|
next_step(STD_FILE_DESCRIPTORS_POST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LAST_STEP(FIRST);
|
||||||
|
LAST_STEP(SECOND);
|
||||||
|
LAST_STEP(THIRD);
|
||||||
|
LAST_STEP(FOURTH);
|
||||||
|
LAST_STEP(FIFTH);
|
||||||
|
LAST_STEP(SIXTH);
|
||||||
|
LAST_STEP(SEVENTH);
|
||||||
|
LAST_STEP(EIGHTH);
|
||||||
|
LAST_STEP(NINETH);
|
||||||
|
LAST_STEP(TENTH);
|
||||||
|
LAST_STEP(MIDDLE);
|
||||||
|
LAST_STEP(LAST);
|
||||||
|
|
||||||
static void Init(rtems_task_argument arg)
|
static void Init(rtems_task_argument arg)
|
||||||
{
|
{
|
||||||
#ifdef RTEMS_POSIX_API
|
#ifdef RTEMS_POSIX_API
|
||||||
|
|||||||
Reference in New Issue
Block a user