Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:22

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /**
0004  * @file
0005  *
0006  * @ingroup RTEMSImplClassic
0007  *
0008  * @brief This source file contains the implementation of
0009  *   _Sysinit_Verbose().
0010  */
0011 
0012 /*
0013  * Copyright (C) 2020 embedded brains GmbH & Co. KG
0014  *
0015  * Redistribution and use in source and binary forms, with or without
0016  * modification, are permitted provided that the following conditions
0017  * are met:
0018  * 1. Redistributions of source code must retain the above copyright
0019  *    notice, this list of conditions and the following disclaimer.
0020  * 2. Redistributions in binary form must reproduce the above copyright
0021  *    notice, this list of conditions and the following disclaimer in the
0022  *    documentation and/or other materials provided with the distribution.
0023  *
0024  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0025  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0026  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0027  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0028  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0029  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0030  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0031  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0032  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0033  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0034  * POSSIBILITY OF SUCH DAMAGE.
0035  */
0036 
0037 #include <rtems/sysinit.h>
0038 #include <rtems/score/memory.h>
0039 #include <rtems/bspIo.h>
0040 
0041 #include <inttypes.h>
0042 
0043 RTEMS_LINKER_RWSET_ITEM_DECLARE(
0044   _Sysinit,
0045   rtems_sysinit_item,
0046   _Sysinit_Verbose
0047 );
0048 
0049 #define SYSINIT_VERBOSE(x) \
0050   static void _Sysinit_Verbose_##x( void ); \
0051   RTEMS_SYSINIT_ITEM( \
0052     _Sysinit_Verbose_##x, \
0053     RTEMS_SYSINIT_##x, \
0054     RTEMS_SYSINIT_ORDER_LAST \
0055   )
0056 
0057 SYSINIT_VERBOSE( BSP_EARLY );
0058 SYSINIT_VERBOSE( MEMORY );
0059 SYSINIT_VERBOSE( DIRTY_MEMORY );
0060 SYSINIT_VERBOSE( ZERO_MEMORY );
0061 SYSINIT_VERBOSE( ISR_STACK );
0062 SYSINIT_VERBOSE( PER_CPU_DATA );
0063 SYSINIT_VERBOSE( SBRK );
0064 SYSINIT_VERBOSE( STACK_ALLOCATOR );
0065 SYSINIT_VERBOSE( WORKSPACE );
0066 SYSINIT_VERBOSE( MALLOC );
0067 SYSINIT_VERBOSE( BSP_START );
0068 SYSINIT_VERBOSE( CPU_COUNTER );
0069 SYSINIT_VERBOSE( TARGET_HASH );
0070 SYSINIT_VERBOSE( INITIAL_EXTENSIONS );
0071 SYSINIT_VERBOSE( MP_EARLY );
0072 SYSINIT_VERBOSE( DATA_STRUCTURES );
0073 SYSINIT_VERBOSE( MP );
0074 SYSINIT_VERBOSE( USER_EXTENSIONS );
0075 SYSINIT_VERBOSE( CLASSIC_TASKS );
0076 SYSINIT_VERBOSE( CLASSIC_TASKS_MP );
0077 SYSINIT_VERBOSE( CLASSIC_TIMER );
0078 SYSINIT_VERBOSE( CLASSIC_SIGNAL_MP );
0079 SYSINIT_VERBOSE( CLASSIC_EVENT_MP );
0080 SYSINIT_VERBOSE( CLASSIC_MESSAGE_QUEUE );
0081 SYSINIT_VERBOSE( CLASSIC_MESSAGE_QUEUE_MP );
0082 SYSINIT_VERBOSE( CLASSIC_SEMAPHORE );
0083 SYSINIT_VERBOSE( CLASSIC_SEMAPHORE_MP );
0084 SYSINIT_VERBOSE( CLASSIC_PARTITION );
0085 SYSINIT_VERBOSE( CLASSIC_PARTITION_MP );
0086 SYSINIT_VERBOSE( CLASSIC_REGION );
0087 SYSINIT_VERBOSE( CLASSIC_DUAL_PORTED_MEMORY );
0088 SYSINIT_VERBOSE( CLASSIC_RATE_MONOTONIC );
0089 SYSINIT_VERBOSE( CLASSIC_BARRIER );
0090 SYSINIT_VERBOSE( POSIX_SIGNALS );
0091 SYSINIT_VERBOSE( POSIX_THREADS );
0092 SYSINIT_VERBOSE( POSIX_MESSAGE_QUEUE );
0093 SYSINIT_VERBOSE( POSIX_SEMAPHORE );
0094 SYSINIT_VERBOSE( POSIX_TIMER );
0095 SYSINIT_VERBOSE( POSIX_SHM );
0096 SYSINIT_VERBOSE( POSIX_KEYS );
0097 SYSINIT_VERBOSE( POSIX_CLEANUP );
0098 SYSINIT_VERBOSE( IDLE_THREADS );
0099 SYSINIT_VERBOSE( LIBIO );
0100 SYSINIT_VERBOSE( USER_ENVIRONMENT );
0101 SYSINIT_VERBOSE( ROOT_FILESYSTEM );
0102 SYSINIT_VERBOSE( DRVMGR );
0103 SYSINIT_VERBOSE( MP_SERVER );
0104 SYSINIT_VERBOSE( BSP_PRE_DRIVERS );
0105 SYSINIT_VERBOSE( DRVMGR_LEVEL_1 );
0106 SYSINIT_VERBOSE( DEVICE_DRIVERS );
0107 SYSINIT_VERBOSE( DRVMGR_LEVEL_2 );
0108 SYSINIT_VERBOSE( DRVMGR_LEVEL_3 );
0109 SYSINIT_VERBOSE( DRVMGR_LEVEL_4 );
0110 SYSINIT_VERBOSE( MP_FINALIZE );
0111 SYSINIT_VERBOSE( CLASSIC_USER_TASKS );
0112 SYSINIT_VERBOSE( POSIX_USER_THREADS );
0113 SYSINIT_VERBOSE( STD_FILE_DESCRIPTORS );
0114 SYSINIT_VERBOSE( LAST );
0115 
0116 static bool _Sysinit_Verbose_is_adjacent(
0117   const rtems_sysinit_item *a,
0118   const rtems_sysinit_item *b
0119 )
0120 {
0121   RTEMS_OBFUSCATE_VARIABLE( a );
0122   RTEMS_OBFUSCATE_VARIABLE( b );
0123 
0124   return a + 1 == b;
0125 }
0126 
0127 #define SYSINIT_IS_ADJACENT( x, y ) \
0128   _Sysinit_Verbose_is_adjacent( \
0129     &_Linker_set__Sysinit__Sysinit_Verbose_##x, \
0130     &_Linker_set__Sysinit__Sysinit_Verbose_##y \
0131   )
0132 
0133 static void _Sysinit_Print_free_memory( void )
0134 {
0135   const Memory_Information *mem;
0136   size_t                    i;
0137 
0138   mem = _Memory_Get();
0139 
0140   for ( i = 0; i < _Memory_Get_count( mem ); ++i ) {
0141     const Memory_Area *area;
0142 
0143     area = _Memory_Get_area( mem, i );
0144     printk(
0145       "sysinit: memory area %zu: free begin = 0x%08" PRIxPTR
0146         ", free size = 0x%08" PRIxPTR "\n",
0147       i,
0148       (uintptr_t) _Memory_Get_free_begin( area ),
0149       _Memory_Get_free_size( area )
0150     );
0151   }
0152 }
0153 
0154 void _Sysinit_Verbose( void )
0155 {
0156   printk( "sysinit: begin\n" );
0157 }
0158 
0159 static void _Sysinit_Verbose_BSP_EARLY( void )
0160 {
0161   if (
0162     !_Sysinit_Verbose_is_adjacent(
0163       &_Linker_set__Sysinit__Sysinit_Verbose,
0164       &_Linker_set__Sysinit__Sysinit_Verbose_BSP_EARLY
0165     )
0166   ) {
0167     printk( "sysinit: BSP early: done\n" );
0168   }
0169 }
0170 
0171 static void _Sysinit_Verbose_MEMORY( void )
0172 {
0173   const Memory_Information *mem;
0174   size_t                    i;
0175 
0176   if ( !SYSINIT_IS_ADJACENT( BSP_EARLY, MEMORY ) ) {
0177     printk( "sysinit: memory: done\n" );
0178   }
0179 
0180   printk(
0181     "sysinit: stack pointer: 0x%08" PRIxPTR "\n",
0182     (uintptr_t) __builtin_frame_address( 0 )
0183   );
0184 
0185   mem = _Memory_Get();
0186 
0187   for ( i = 0; i < _Memory_Get_count( mem ); ++i ) {
0188     const Memory_Area *area;
0189 
0190     area = _Memory_Get_area( mem, i );
0191     printk(
0192       "sysinit: memory area %zu: begin = 0x%08" PRIxPTR
0193         ", size = 0x%08" PRIxPTR "\n",
0194       i,
0195       (uintptr_t) _Memory_Get_begin( area ),
0196       _Memory_Get_size( area )
0197     );
0198   }
0199 }
0200 
0201 static void _Sysinit_Verbose_DIRTY_MEMORY( void )
0202 {
0203   if ( !SYSINIT_IS_ADJACENT( BSP_EARLY, DIRTY_MEMORY ) ) {
0204     printk( "sysinit: DIRTY_MEMORY: done\n" );
0205   }
0206 }
0207 
0208 static void _Sysinit_Verbose_ZERO_MEMORY( void )
0209 {
0210   if ( !SYSINIT_IS_ADJACENT( DIRTY_MEMORY, ZERO_MEMORY ) ) {
0211     printk( "sysinit: ZERO_MEMORY: done\n" );
0212   }
0213 }
0214 
0215 static void _Sysinit_Verbose_ISR_STACK( void )
0216 {
0217   if ( !SYSINIT_IS_ADJACENT( ZERO_MEMORY, ISR_STACK ) ) {
0218     printk( "sysinit: ISR_STACK: done\n" );
0219   }
0220 }
0221 
0222 static void _Sysinit_Verbose_PER_CPU_DATA( void )
0223 {
0224   if ( !SYSINIT_IS_ADJACENT( ISR_STACK, PER_CPU_DATA ) ) {
0225     _Sysinit_Print_free_memory();
0226     printk( "sysinit: PER_CPU_DATA: done\n" );
0227   }
0228 }
0229 
0230 static void _Sysinit_Verbose_SBRK( void )
0231 {
0232   if ( !SYSINIT_IS_ADJACENT( PER_CPU_DATA, SBRK ) ) {
0233     _Sysinit_Print_free_memory();
0234     printk( "sysinit: SBRK: done\n" );
0235   }
0236 }
0237 
0238 static void _Sysinit_Verbose_STACK_ALLOCATOR( void )
0239 {
0240   if ( !SYSINIT_IS_ADJACENT( SBRK, STACK_ALLOCATOR ) ) {
0241     _Sysinit_Print_free_memory();
0242     printk( "sysinit: STACK_ALLOCATOR: done\n" );
0243   }
0244 }
0245 
0246 static void _Sysinit_Verbose_WORKSPACE( void )
0247 {
0248   if ( !SYSINIT_IS_ADJACENT( STACK_ALLOCATOR, WORKSPACE ) ) {
0249     _Sysinit_Print_free_memory();
0250     printk( "sysinit: WORKSPACE: done\n" );
0251   }
0252 }
0253 
0254 static void _Sysinit_Verbose_MALLOC( void )
0255 {
0256   if ( !SYSINIT_IS_ADJACENT( WORKSPACE, MALLOC ) ) {
0257     _Sysinit_Print_free_memory();
0258     printk( "sysinit: MALLOC: done\n" );
0259   }
0260 }
0261 
0262 static void _Sysinit_Verbose_BSP_START( void )
0263 {
0264   if ( !SYSINIT_IS_ADJACENT( MALLOC, BSP_START ) ) {
0265     printk( "sysinit: BSP_START: done\n" );
0266   }
0267 }
0268 
0269 static void _Sysinit_Verbose_CPU_COUNTER( void )
0270 {
0271   if ( !SYSINIT_IS_ADJACENT( BSP_START, CPU_COUNTER ) ) {
0272     printk( "sysinit: CPU_COUNTER: done\n" );
0273   }
0274 }
0275 
0276 static void _Sysinit_Verbose_TARGET_HASH( void )
0277 {
0278   if ( !SYSINIT_IS_ADJACENT( CPU_COUNTER, TARGET_HASH ) ) {
0279     printk( "sysinit: TARGET_HASH: done\n" );
0280   }
0281 }
0282 
0283 static void _Sysinit_Verbose_INITIAL_EXTENSIONS( void )
0284 {
0285   if ( !SYSINIT_IS_ADJACENT( TARGET_HASH, INITIAL_EXTENSIONS ) ) {
0286     printk( "sysinit: INITIAL_EXTENSIONS: done\n" );
0287   }
0288 }
0289 
0290 static void _Sysinit_Verbose_MP_EARLY( void )
0291 {
0292   if ( !SYSINIT_IS_ADJACENT( INITIAL_EXTENSIONS, MP_EARLY ) ) {
0293     printk( "sysinit: MP_EARLY: done\n" );
0294   }
0295 }
0296 
0297 static void _Sysinit_Verbose_DATA_STRUCTURES( void )
0298 {
0299   if ( !SYSINIT_IS_ADJACENT( MP_EARLY, DATA_STRUCTURES ) ) {
0300     printk( "sysinit: DATA_STRUCTURES: done\n" );
0301   }
0302 }
0303 
0304 static void _Sysinit_Verbose_MP( void )
0305 {
0306   if ( !SYSINIT_IS_ADJACENT( DATA_STRUCTURES, MP ) ) {
0307     printk( "sysinit: MP: done\n" );
0308   }
0309 }
0310 
0311 static void _Sysinit_Verbose_USER_EXTENSIONS( void )
0312 {
0313   if ( !SYSINIT_IS_ADJACENT( MP, USER_EXTENSIONS ) ) {
0314     printk( "sysinit: USER_EXTENSIONS: done\n" );
0315   }
0316 }
0317 
0318 static void _Sysinit_Verbose_CLASSIC_TASKS( void )
0319 {
0320   if ( !SYSINIT_IS_ADJACENT( CLASSIC_USER_TASKS, CLASSIC_TASKS ) ) {
0321     printk( "sysinit: CLASSIC_TASKS: done\n" );
0322   }
0323 }
0324 
0325 static void _Sysinit_Verbose_CLASSIC_TASKS_MP( void )
0326 {
0327   if ( !SYSINIT_IS_ADJACENT( CLASSIC_TASKS, CLASSIC_TASKS_MP ) ) {
0328     printk( "sysinit: CLASSIC_TASKS_MP: done\n" );
0329   }
0330 }
0331 
0332 static void _Sysinit_Verbose_CLASSIC_TIMER( void )
0333 {
0334   if ( !SYSINIT_IS_ADJACENT( CLASSIC_TASKS_MP, CLASSIC_TIMER ) ) {
0335     printk( "sysinit: CLASSIC_TIMER: done\n" );
0336   }
0337 }
0338 
0339 static void _Sysinit_Verbose_CLASSIC_SIGNAL_MP( void )
0340 {
0341   if ( !SYSINIT_IS_ADJACENT( CLASSIC_TIMER, CLASSIC_SIGNAL_MP ) ) {
0342     printk( "sysinit: CLASSIC_SIGNAL_MP: done\n" );
0343   }
0344 }
0345 
0346 static void _Sysinit_Verbose_CLASSIC_EVENT_MP( void )
0347 {
0348   if ( !SYSINIT_IS_ADJACENT( CLASSIC_SIGNAL_MP, CLASSIC_EVENT_MP ) ) {
0349     printk( "sysinit: CLASSIC_EVENT_MP: done\n" );
0350   }
0351 }
0352 
0353 static void _Sysinit_Verbose_CLASSIC_MESSAGE_QUEUE( void )
0354 {
0355   if ( !SYSINIT_IS_ADJACENT( CLASSIC_EVENT_MP, CLASSIC_MESSAGE_QUEUE ) ) {
0356     printk( "sysinit: CLASSIC_MESSAGE_QUEUE: done\n" );
0357   }
0358 }
0359 
0360 static void _Sysinit_Verbose_CLASSIC_MESSAGE_QUEUE_MP( void )
0361 {
0362   if ( !SYSINIT_IS_ADJACENT( CLASSIC_MESSAGE_QUEUE, CLASSIC_MESSAGE_QUEUE_MP ) ) {
0363     printk( "sysinit: CLASSIC_MESSAGE_QUEUE_MP: done\n" );
0364   }
0365 }
0366 
0367 static void _Sysinit_Verbose_CLASSIC_SEMAPHORE( void )
0368 {
0369   if ( !SYSINIT_IS_ADJACENT( CLASSIC_MESSAGE_QUEUE_MP, CLASSIC_SEMAPHORE ) ) {
0370     printk( "sysinit: CLASSIC_SEMAPHORE: done\n" );
0371   }
0372 }
0373 
0374 static void _Sysinit_Verbose_CLASSIC_SEMAPHORE_MP( void )
0375 {
0376   if ( !SYSINIT_IS_ADJACENT( CLASSIC_SEMAPHORE, CLASSIC_SEMAPHORE_MP ) ) {
0377     printk( "sysinit: CLASSIC_SEMAPHORE_MP: done\n" );
0378   }
0379 }
0380 
0381 static void _Sysinit_Verbose_CLASSIC_PARTITION( void )
0382 {
0383   if ( !SYSINIT_IS_ADJACENT( CLASSIC_SEMAPHORE_MP, CLASSIC_PARTITION ) ) {
0384     printk( "sysinit: CLASSIC_PARTITION: done\n" );
0385   }
0386 }
0387 
0388 static void _Sysinit_Verbose_CLASSIC_PARTITION_MP( void )
0389 {
0390   if ( !SYSINIT_IS_ADJACENT( CLASSIC_PARTITION, CLASSIC_PARTITION_MP ) ) {
0391     printk( "sysinit: CLASSIC_PARTITION_MP: done\n" );
0392   }
0393 }
0394 
0395 static void _Sysinit_Verbose_CLASSIC_REGION( void )
0396 {
0397   if ( !SYSINIT_IS_ADJACENT( CLASSIC_PARTITION_MP, CLASSIC_REGION ) ) {
0398     printk( "sysinit: CLASSIC_REGION: done\n" );
0399   }
0400 }
0401 
0402 static void _Sysinit_Verbose_CLASSIC_DUAL_PORTED_MEMORY( void )
0403 {
0404   if ( !SYSINIT_IS_ADJACENT( CLASSIC_REGION, CLASSIC_DUAL_PORTED_MEMORY ) ) {
0405     printk( "sysinit: CLASSIC_DUAL_PORTED_MEMORY: done\n" );
0406   }
0407 }
0408 
0409 static void _Sysinit_Verbose_CLASSIC_RATE_MONOTONIC( void )
0410 {
0411   if (
0412     !SYSINIT_IS_ADJACENT(
0413       CLASSIC_DUAL_PORTED_MEMORY,
0414       CLASSIC_RATE_MONOTONIC
0415     )
0416   ) {
0417     printk( "sysinit: CLASSIC_RATE_MONOTONIC: done\n" );
0418   }
0419 }
0420 
0421 static void _Sysinit_Verbose_CLASSIC_BARRIER( void )
0422 {
0423   if ( !SYSINIT_IS_ADJACENT( CLASSIC_RATE_MONOTONIC, CLASSIC_BARRIER ) ) {
0424     printk( "sysinit: CLASSIC_BARRIER: done\n" );
0425   }
0426 }
0427 
0428 static void _Sysinit_Verbose_POSIX_SIGNALS( void )
0429 {
0430   if ( !SYSINIT_IS_ADJACENT( CLASSIC_BARRIER, POSIX_SIGNALS ) ) {
0431     printk( "sysinit: POSIX_SIGNALS: done\n" );
0432   }
0433 }
0434 
0435 static void _Sysinit_Verbose_POSIX_THREADS( void )
0436 {
0437   if ( !SYSINIT_IS_ADJACENT( POSIX_SIGNALS, POSIX_THREADS ) ) {
0438     printk( "sysinit: POSIX_THREADS: done\n" );
0439   }
0440 }
0441 
0442 static void _Sysinit_Verbose_POSIX_MESSAGE_QUEUE( void )
0443 {
0444   if ( !SYSINIT_IS_ADJACENT( POSIX_THREADS, POSIX_MESSAGE_QUEUE ) ) {
0445     printk( "sysinit: POSIX_MESSAGE_QUEUE: done\n" );
0446   }
0447 }
0448 
0449 static void _Sysinit_Verbose_POSIX_SEMAPHORE( void )
0450 {
0451   if ( !SYSINIT_IS_ADJACENT( POSIX_MESSAGE_QUEUE, POSIX_SEMAPHORE ) ) {
0452     printk( "sysinit: POSIX_SEMAPHORE: done\n" );
0453   }
0454 }
0455 
0456 static void _Sysinit_Verbose_POSIX_TIMER( void )
0457 {
0458   if ( !SYSINIT_IS_ADJACENT( POSIX_SEMAPHORE, POSIX_TIMER ) ) {
0459     printk( "sysinit: POSIX_TIMER: done\n" );
0460   }
0461 }
0462 
0463 static void _Sysinit_Verbose_POSIX_SHM( void )
0464 {
0465   if ( !SYSINIT_IS_ADJACENT( POSIX_TIMER, POSIX_SHM ) ) {
0466     printk( "sysinit: POSIX_SHM: done\n" );
0467   }
0468 }
0469 
0470 static void _Sysinit_Verbose_POSIX_KEYS( void )
0471 {
0472   if ( !SYSINIT_IS_ADJACENT( POSIX_SHM, POSIX_KEYS ) ) {
0473     printk( "sysinit: POSIX_KEYS: done\n" );
0474   }
0475 }
0476 
0477 static void _Sysinit_Verbose_POSIX_CLEANUP( void )
0478 {
0479   if ( !SYSINIT_IS_ADJACENT( POSIX_KEYS, POSIX_CLEANUP ) ) {
0480     printk( "sysinit: POSIX_CLEANUP: done\n" );
0481   }
0482 }
0483 
0484 static void _Sysinit_Verbose_IDLE_THREADS( void )
0485 {
0486   if ( !SYSINIT_IS_ADJACENT( POSIX_CLEANUP, IDLE_THREADS ) ) {
0487     printk( "sysinit: IDLE_THREADS: done\n" );
0488   }
0489 }
0490 
0491 static void _Sysinit_Verbose_LIBIO( void )
0492 {
0493   if ( !SYSINIT_IS_ADJACENT( IDLE_THREADS, LIBIO ) ) {
0494     printk( "sysinit: LIBIO: done\n" );
0495   }
0496 }
0497 
0498 static void _Sysinit_Verbose_USER_ENVIRONMENT( void )
0499 {
0500   if ( !SYSINIT_IS_ADJACENT( LIBIO, USER_ENVIRONMENT ) ) {
0501     printk( "sysinit: USER_ENVIRONMENT: done\n" );
0502   }
0503 }
0504 
0505 static void _Sysinit_Verbose_ROOT_FILESYSTEM( void )
0506 {
0507   if ( !SYSINIT_IS_ADJACENT( USER_ENVIRONMENT, ROOT_FILESYSTEM ) ) {
0508     printk( "sysinit: ROOT_FILESYSTEM: done\n" );
0509   }
0510 }
0511 
0512 static void _Sysinit_Verbose_DRVMGR( void )
0513 {
0514   if ( !SYSINIT_IS_ADJACENT( ROOT_FILESYSTEM, DRVMGR ) ) {
0515     printk( "sysinit: DRVMGR: done\n" );
0516   }
0517 }
0518 
0519 static void _Sysinit_Verbose_MP_SERVER( void )
0520 {
0521   if ( !SYSINIT_IS_ADJACENT( DRVMGR, MP_SERVER ) ) {
0522     printk( "sysinit: MP_SERVER: done\n" );
0523   }
0524 }
0525 
0526 static void _Sysinit_Verbose_BSP_PRE_DRIVERS( void )
0527 {
0528   if ( !SYSINIT_IS_ADJACENT( MP_SERVER, BSP_PRE_DRIVERS ) ) {
0529     printk( "sysinit: BSP_PRE_DRIVERS: done\n" );
0530   }
0531 }
0532 
0533 static void _Sysinit_Verbose_DRVMGR_LEVEL_1( void )
0534 {
0535   if ( !SYSINIT_IS_ADJACENT( BSP_PRE_DRIVERS, DRVMGR_LEVEL_1 ) ) {
0536     printk( "sysinit: DRVMGR_LEVEL_1: done\n" );
0537   }
0538 }
0539 
0540 static void _Sysinit_Verbose_DEVICE_DRIVERS( void )
0541 {
0542   if ( !SYSINIT_IS_ADJACENT( DRVMGR_LEVEL_1, DEVICE_DRIVERS ) ) {
0543     printk( "sysinit: DEVICE_DRIVERS: done\n" );
0544   }
0545 }
0546 
0547 static void _Sysinit_Verbose_DRVMGR_LEVEL_2( void )
0548 {
0549   if ( !SYSINIT_IS_ADJACENT( DEVICE_DRIVERS, DRVMGR_LEVEL_2 ) ) {
0550     printk( "sysinit: DRVMGR_LEVEL_2: done\n" );
0551   }
0552 }
0553 
0554 static void _Sysinit_Verbose_DRVMGR_LEVEL_3( void )
0555 {
0556   if ( !SYSINIT_IS_ADJACENT( DRVMGR_LEVEL_2, DRVMGR_LEVEL_3 ) ) {
0557     printk( "sysinit: DRVMGR_LEVEL_3: done\n" );
0558   }
0559 }
0560 
0561 static void _Sysinit_Verbose_DRVMGR_LEVEL_4( void )
0562 {
0563   if ( !SYSINIT_IS_ADJACENT( DRVMGR_LEVEL_3, DRVMGR_LEVEL_4 ) ) {
0564     printk( "sysinit: DRVMGR_LEVEL_4: done\n" );
0565   }
0566 }
0567 
0568 static void _Sysinit_Verbose_MP_FINALIZE( void )
0569 {
0570   if ( !SYSINIT_IS_ADJACENT( DRVMGR_LEVEL_4, MP_FINALIZE ) ) {
0571     printk( "sysinit: MP_FINALIZE: done\n" );
0572   }
0573 }
0574 
0575 static void _Sysinit_Verbose_CLASSIC_USER_TASKS( void )
0576 {
0577   if ( !SYSINIT_IS_ADJACENT( MP_FINALIZE, CLASSIC_USER_TASKS ) ) {
0578     printk( "sysinit: CLASSIC_USER_TASKS: done\n" );
0579   }
0580 }
0581 
0582 static void _Sysinit_Verbose_POSIX_USER_THREADS( void )
0583 {
0584   if ( !SYSINIT_IS_ADJACENT( CLASSIC_USER_TASKS, POSIX_USER_THREADS ) ) {
0585     printk( "sysinit: POSIX_USER_THREADS: done\n" );
0586   }
0587 }
0588 
0589 static void _Sysinit_Verbose_STD_FILE_DESCRIPTORS( void )
0590 {
0591   if ( !SYSINIT_IS_ADJACENT( POSIX_USER_THREADS, STD_FILE_DESCRIPTORS ) ) {
0592     printk( "sysinit: STD_FILE_DESCRIPTORS: done\n" );
0593   }
0594 }
0595 
0596 static void _Sysinit_Verbose_LAST( void )
0597 {
0598   printk( "sysinit: done\n" );
0599 }