diff options
-rw-r--r-- | cpukit/score/include/rtems/sysinit.h | 16 | ||||
-rw-r--r-- | testsuites/sptests/spsysinit01/init.c | 36 |
2 files changed, 49 insertions, 3 deletions
diff --git a/cpukit/score/include/rtems/sysinit.h b/cpukit/score/include/rtems/sysinit.h index e7b9c63f14..ad68c45c5c 100644 --- a/cpukit/score/include/rtems/sysinit.h +++ b/cpukit/score/include/rtems/sysinit.h @@ -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 ); diff --git a/testsuites/sptests/spsysinit01/init.c b/testsuites/sptests/spsysinit01/init.c index 88185da29f..1ce22d5c08 100644 --- a/testsuites/sptests/spsysinit01/init.c +++ b/testsuites/sptests/spsysinit01/init.c @@ -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 |