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_POSIX_USER_THREADS 000707
|
||||
#define RTEMS_SYSINIT_STD_FILE_DESCRIPTORS 000800
|
||||
#define RTEMS_SYSINIT_LAST ffffff
|
||||
|
||||
/*
|
||||
* 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
|
||||
* order values to form a proper integer literal.
|
||||
*/
|
||||
#define RTEMS_SYSINIT_ORDER_FIRST 00
|
||||
#define RTEMS_SYSINIT_ORDER_MIDDLE 08
|
||||
#define RTEMS_SYSINIT_ORDER_LAST 0f
|
||||
#define RTEMS_SYSINIT_ORDER_FIRST 00
|
||||
#define RTEMS_SYSINIT_ORDER_SECOND 01
|
||||
#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 );
|
||||
|
||||
|
||||
@@ -143,6 +143,18 @@ typedef enum {
|
||||
#endif /* RTEMS_POSIX_API */
|
||||
STD_FILE_DESCRIPTORS_PRE,
|
||||
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,
|
||||
DONE
|
||||
} init_step;
|
||||
@@ -165,6 +177,17 @@ typedef enum {
|
||||
); \
|
||||
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 void next_step(init_step expected)
|
||||
@@ -674,6 +697,19 @@ LAST(RTEMS_SYSINIT_STD_FILE_DESCRIPTORS)
|
||||
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)
|
||||
{
|
||||
#ifdef RTEMS_POSIX_API
|
||||
|
||||
Reference in New Issue
Block a user