source: rtems/cpukit/sapi/src/sysinitverbose.c @ bc6ffc3

Last change on this file since bc6ffc3 was bc6ffc3, checked in by Sebastian Huber <sebastian.huber@…>, on 02/24/21 at 12:25:46

Add system initialization step for target hash

Update #4267.

  • Property mode set to 100644
File size: 15.3 KB
Line 
1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/**
4 * @file
5 *
6 * @ingroup RTEMSImplClassic
7 *
8 * @brief This source file contains the implementation of
9 *   _Sysinit_Verbose().
10 */
11
12/*
13 * Copyright (C) 2020 embedded brains GmbH
14 *
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
17 * are met:
18 * 1. Redistributions of source code must retain the above copyright
19 *    notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above copyright
21 *    notice, this list of conditions and the following disclaimer in the
22 *    documentation and/or other materials provided with the distribution.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 */
36
37#include <rtems/sysinit.h>
38#include <rtems/score/memory.h>
39#include <rtems/bspIo.h>
40
41#include <inttypes.h>
42
43RTEMS_LINKER_RWSET_ITEM_DECLARE(
44  _Sysinit,
45  rtems_sysinit_item,
46  _Sysinit_Verbose
47);
48
49#define SYSINIT_VERBOSE(x) \
50  static void _Sysinit_Verbose_##x( void ); \
51  RTEMS_SYSINIT_ITEM( \
52    _Sysinit_Verbose_##x, \
53    RTEMS_SYSINIT_##x, \
54    RTEMS_SYSINIT_ORDER_LAST \
55  )
56
57SYSINIT_VERBOSE( BSP_EARLY );
58SYSINIT_VERBOSE( MEMORY );
59SYSINIT_VERBOSE( DIRTY_MEMORY );
60SYSINIT_VERBOSE( ZERO_MEMORY );
61SYSINIT_VERBOSE( ISR_STACK );
62SYSINIT_VERBOSE( PER_CPU_DATA );
63SYSINIT_VERBOSE( SBRK );
64SYSINIT_VERBOSE( STACK_ALLOCATOR );
65SYSINIT_VERBOSE( WORKSPACE );
66SYSINIT_VERBOSE( MALLOC );
67SYSINIT_VERBOSE( BSP_START );
68SYSINIT_VERBOSE( CPU_COUNTER );
69SYSINIT_VERBOSE( TARGET_HASH );
70SYSINIT_VERBOSE( INITIAL_EXTENSIONS );
71SYSINIT_VERBOSE( MP_EARLY );
72SYSINIT_VERBOSE( DATA_STRUCTURES );
73SYSINIT_VERBOSE( MP );
74SYSINIT_VERBOSE( USER_EXTENSIONS );
75SYSINIT_VERBOSE( CLASSIC_TASKS );
76SYSINIT_VERBOSE( CLASSIC_TASKS_MP );
77SYSINIT_VERBOSE( CLASSIC_TIMER );
78SYSINIT_VERBOSE( CLASSIC_SIGNAL_MP );
79SYSINIT_VERBOSE( CLASSIC_EVENT_MP );
80SYSINIT_VERBOSE( CLASSIC_MESSAGE_QUEUE );
81SYSINIT_VERBOSE( CLASSIC_MESSAGE_QUEUE_MP );
82SYSINIT_VERBOSE( CLASSIC_SEMAPHORE );
83SYSINIT_VERBOSE( CLASSIC_SEMAPHORE_MP );
84SYSINIT_VERBOSE( CLASSIC_PARTITION );
85SYSINIT_VERBOSE( CLASSIC_PARTITION_MP );
86SYSINIT_VERBOSE( CLASSIC_REGION );
87SYSINIT_VERBOSE( CLASSIC_DUAL_PORTED_MEMORY );
88SYSINIT_VERBOSE( CLASSIC_RATE_MONOTONIC );
89SYSINIT_VERBOSE( CLASSIC_BARRIER );
90SYSINIT_VERBOSE( POSIX_SIGNALS );
91SYSINIT_VERBOSE( POSIX_THREADS );
92SYSINIT_VERBOSE( POSIX_MESSAGE_QUEUE );
93SYSINIT_VERBOSE( POSIX_SEMAPHORE );
94SYSINIT_VERBOSE( POSIX_TIMER );
95SYSINIT_VERBOSE( POSIX_SHM );
96SYSINIT_VERBOSE( POSIX_KEYS );
97SYSINIT_VERBOSE( POSIX_CLEANUP );
98SYSINIT_VERBOSE( IDLE_THREADS );
99SYSINIT_VERBOSE( LIBIO );
100SYSINIT_VERBOSE( USER_ENVIRONMENT );
101SYSINIT_VERBOSE( ROOT_FILESYSTEM );
102SYSINIT_VERBOSE( DRVMGR );
103SYSINIT_VERBOSE( MP_SERVER );
104SYSINIT_VERBOSE( BSP_PRE_DRIVERS );
105SYSINIT_VERBOSE( DRVMGR_LEVEL_1 );
106SYSINIT_VERBOSE( DEVICE_DRIVERS );
107SYSINIT_VERBOSE( DRVMGR_LEVEL_2 );
108SYSINIT_VERBOSE( DRVMGR_LEVEL_3 );
109SYSINIT_VERBOSE( DRVMGR_LEVEL_4 );
110SYSINIT_VERBOSE( MP_FINALIZE );
111SYSINIT_VERBOSE( CLASSIC_USER_TASKS );
112SYSINIT_VERBOSE( POSIX_USER_THREADS );
113SYSINIT_VERBOSE( STD_FILE_DESCRIPTORS );
114SYSINIT_VERBOSE( LAST );
115
116static bool _Sysinit_Verbose_is_adjacent(
117  const rtems_sysinit_item *a,
118  const rtems_sysinit_item *b
119)
120{
121  RTEMS_OBFUSCATE_VARIABLE( a );
122  RTEMS_OBFUSCATE_VARIABLE( b );
123
124  return a + 1 == b;
125}
126
127#define SYSINIT_IS_ADJACENT( x, y ) \
128  _Sysinit_Verbose_is_adjacent( \
129    &_Linker_set__Sysinit__Sysinit_Verbose_##x, \
130    &_Linker_set__Sysinit__Sysinit_Verbose_##y \
131  )
132
133static void _Sysinit_Print_free_memory( void )
134{
135  const Memory_Information *mem;
136  size_t                    i;
137
138  mem = _Memory_Get();
139
140  for ( i = 0; i < _Memory_Get_count( mem ); ++i ) {
141    const Memory_Area *area;
142
143    area = _Memory_Get_area( mem, i );
144    printk(
145      "sysinit: memory area %zu: free begin = 0x%08" PRIxPTR
146        ", free size = 0x%08" PRIxPTR "\n",
147      i,
148      (uintptr_t) _Memory_Get_free_begin( area ),
149      _Memory_Get_free_size( area )
150    );
151  }
152}
153
154void _Sysinit_Verbose( void )
155{
156  printk( "sysinit: begin\n" );
157}
158
159static void _Sysinit_Verbose_BSP_EARLY( void )
160{
161  if (
162    !_Sysinit_Verbose_is_adjacent(
163      &_Linker_set__Sysinit__Sysinit_Verbose,
164      &_Linker_set__Sysinit__Sysinit_Verbose_BSP_EARLY
165    )
166  ) {
167    printk( "sysinit: BSP early: done\n" );
168  }
169}
170
171static void _Sysinit_Verbose_MEMORY( void )
172{
173  const Memory_Information *mem;
174  size_t                    i;
175
176  if ( !SYSINIT_IS_ADJACENT( BSP_EARLY, MEMORY ) ) {
177    printk( "sysinit: memory: done\n" );
178  }
179
180  printk(
181    "sysinit: stack pointer: 0x%08" PRIxPTR "\n",
182    (uintptr_t) __builtin_frame_address( 0 )
183  );
184
185  mem = _Memory_Get();
186
187  for ( i = 0; i < _Memory_Get_count( mem ); ++i ) {
188    const Memory_Area *area;
189
190    area = _Memory_Get_area( mem, i );
191    printk(
192      "sysinit: memory area %zu: begin = 0x%08" PRIxPTR
193        ", size = 0x%08" PRIxPTR "\n",
194      i,
195      (uintptr_t) _Memory_Get_begin( area ),
196      _Memory_Get_size( area )
197    );
198  }
199}
200
201static void _Sysinit_Verbose_DIRTY_MEMORY( void )
202{
203  if ( !SYSINIT_IS_ADJACENT( BSP_EARLY, DIRTY_MEMORY ) ) {
204    printk( "sysinit: DIRTY_MEMORY: done\n" );
205  }
206}
207
208static void _Sysinit_Verbose_ZERO_MEMORY( void )
209{
210  if ( !SYSINIT_IS_ADJACENT( DIRTY_MEMORY, ZERO_MEMORY ) ) {
211    printk( "sysinit: ZERO_MEMORY: done\n" );
212  }
213}
214
215static void _Sysinit_Verbose_ISR_STACK( void )
216{
217  if ( !SYSINIT_IS_ADJACENT( ZERO_MEMORY, ISR_STACK ) ) {
218    printk( "sysinit: ISR_STACK: done\n" );
219  }
220}
221
222static void _Sysinit_Verbose_PER_CPU_DATA( void )
223{
224  if ( !SYSINIT_IS_ADJACENT( ISR_STACK, PER_CPU_DATA ) ) {
225    _Sysinit_Print_free_memory();
226    printk( "sysinit: PER_CPU_DATA: done\n" );
227  }
228}
229
230static void _Sysinit_Verbose_SBRK( void )
231{
232  if ( !SYSINIT_IS_ADJACENT( PER_CPU_DATA, SBRK ) ) {
233    _Sysinit_Print_free_memory();
234    printk( "sysinit: SBRK: done\n" );
235  }
236}
237
238static void _Sysinit_Verbose_STACK_ALLOCATOR( void )
239{
240  if ( !SYSINIT_IS_ADJACENT( SBRK, STACK_ALLOCATOR ) ) {
241    _Sysinit_Print_free_memory();
242    printk( "sysinit: STACK_ALLOCATOR: done\n" );
243  }
244}
245
246static void _Sysinit_Verbose_WORKSPACE( void )
247{
248  if ( !SYSINIT_IS_ADJACENT( STACK_ALLOCATOR, WORKSPACE ) ) {
249    _Sysinit_Print_free_memory();
250    printk( "sysinit: WORKSPACE: done\n" );
251  }
252}
253
254static void _Sysinit_Verbose_MALLOC( void )
255{
256  if ( !SYSINIT_IS_ADJACENT( WORKSPACE, MALLOC ) ) {
257    _Sysinit_Print_free_memory();
258    printk( "sysinit: MALLOC: done\n" );
259  }
260}
261
262static void _Sysinit_Verbose_BSP_START( void )
263{
264  if ( !SYSINIT_IS_ADJACENT( MALLOC, BSP_START ) ) {
265    printk( "sysinit: BSP_START: done\n" );
266  }
267}
268
269static void _Sysinit_Verbose_CPU_COUNTER( void )
270{
271  if ( !SYSINIT_IS_ADJACENT( BSP_START, CPU_COUNTER ) ) {
272    printk( "sysinit: CPU_COUNTER: done\n" );
273  }
274}
275
276static void _Sysinit_Verbose_TARGET_HASH( void )
277{
278  if ( !SYSINIT_IS_ADJACENT( CPU_COUNTER, TARGET_HASH ) ) {
279    printk( "sysinit: TARGET_HASH: done\n" );
280  }
281}
282
283static void _Sysinit_Verbose_INITIAL_EXTENSIONS( void )
284{
285  if ( !SYSINIT_IS_ADJACENT( TARGET_HASH, INITIAL_EXTENSIONS ) ) {
286    printk( "sysinit: INITIAL_EXTENSIONS: done\n" );
287  }
288}
289
290static void _Sysinit_Verbose_MP_EARLY( void )
291{
292  if ( !SYSINIT_IS_ADJACENT( INITIAL_EXTENSIONS, MP_EARLY ) ) {
293    printk( "sysinit: MP_EARLY: done\n" );
294  }
295}
296
297static void _Sysinit_Verbose_DATA_STRUCTURES( void )
298{
299  if ( !SYSINIT_IS_ADJACENT( MP_EARLY, DATA_STRUCTURES ) ) {
300    printk( "sysinit: DATA_STRUCTURES: done\n" );
301  }
302}
303
304static void _Sysinit_Verbose_MP( void )
305{
306  if ( !SYSINIT_IS_ADJACENT( DATA_STRUCTURES, MP ) ) {
307    printk( "sysinit: MP: done\n" );
308  }
309}
310
311static void _Sysinit_Verbose_USER_EXTENSIONS( void )
312{
313  if ( !SYSINIT_IS_ADJACENT( MP, USER_EXTENSIONS ) ) {
314    printk( "sysinit: USER_EXTENSIONS: done\n" );
315  }
316}
317
318static void _Sysinit_Verbose_CLASSIC_TASKS( void )
319{
320  if ( !SYSINIT_IS_ADJACENT( CLASSIC_USER_TASKS, CLASSIC_TASKS ) ) {
321    printk( "sysinit: CLASSIC_TASKS: done\n" );
322  }
323}
324
325static void _Sysinit_Verbose_CLASSIC_TASKS_MP( void )
326{
327  if ( !SYSINIT_IS_ADJACENT( CLASSIC_TASKS, CLASSIC_TASKS_MP ) ) {
328    printk( "sysinit: CLASSIC_TASKS_MP: done\n" );
329  }
330}
331
332static void _Sysinit_Verbose_CLASSIC_TIMER( void )
333{
334  if ( !SYSINIT_IS_ADJACENT( CLASSIC_TASKS_MP, CLASSIC_TIMER ) ) {
335    printk( "sysinit: CLASSIC_TIMER: done\n" );
336  }
337}
338
339static void _Sysinit_Verbose_CLASSIC_SIGNAL_MP( void )
340{
341  if ( !SYSINIT_IS_ADJACENT( CLASSIC_TIMER, CLASSIC_SIGNAL_MP ) ) {
342    printk( "sysinit: CLASSIC_SIGNAL_MP: done\n" );
343  }
344}
345
346static void _Sysinit_Verbose_CLASSIC_EVENT_MP( void )
347{
348  if ( !SYSINIT_IS_ADJACENT( CLASSIC_SIGNAL_MP, CLASSIC_EVENT_MP ) ) {
349    printk( "sysinit: CLASSIC_EVENT_MP: done\n" );
350  }
351}
352
353static void _Sysinit_Verbose_CLASSIC_MESSAGE_QUEUE( void )
354{
355  if ( !SYSINIT_IS_ADJACENT( CLASSIC_EVENT_MP, CLASSIC_MESSAGE_QUEUE ) ) {
356    printk( "sysinit: CLASSIC_MESSAGE_QUEUE: done\n" );
357  }
358}
359
360static void _Sysinit_Verbose_CLASSIC_MESSAGE_QUEUE_MP( void )
361{
362  if ( !SYSINIT_IS_ADJACENT( CLASSIC_MESSAGE_QUEUE, CLASSIC_MESSAGE_QUEUE_MP ) ) {
363    printk( "sysinit: CLASSIC_MESSAGE_QUEUE_MP: done\n" );
364  }
365}
366
367static void _Sysinit_Verbose_CLASSIC_SEMAPHORE( void )
368{
369  if ( !SYSINIT_IS_ADJACENT( CLASSIC_MESSAGE_QUEUE_MP, CLASSIC_SEMAPHORE ) ) {
370    printk( "sysinit: CLASSIC_SEMAPHORE: done\n" );
371  }
372}
373
374static void _Sysinit_Verbose_CLASSIC_SEMAPHORE_MP( void )
375{
376  if ( !SYSINIT_IS_ADJACENT( CLASSIC_SEMAPHORE, CLASSIC_SEMAPHORE_MP ) ) {
377    printk( "sysinit: CLASSIC_SEMAPHORE_MP: done\n" );
378  }
379}
380
381static void _Sysinit_Verbose_CLASSIC_PARTITION( void )
382{
383  if ( !SYSINIT_IS_ADJACENT( CLASSIC_SEMAPHORE_MP, CLASSIC_PARTITION ) ) {
384    printk( "sysinit: CLASSIC_PARTITION: done\n" );
385  }
386}
387
388static void _Sysinit_Verbose_CLASSIC_PARTITION_MP( void )
389{
390  if ( !SYSINIT_IS_ADJACENT( CLASSIC_PARTITION, CLASSIC_PARTITION_MP ) ) {
391    printk( "sysinit: CLASSIC_PARTITION_MP: done\n" );
392  }
393}
394
395static void _Sysinit_Verbose_CLASSIC_REGION( void )
396{
397  if ( !SYSINIT_IS_ADJACENT( CLASSIC_PARTITION_MP, CLASSIC_REGION ) ) {
398    printk( "sysinit: CLASSIC_REGION: done\n" );
399  }
400}
401
402static void _Sysinit_Verbose_CLASSIC_DUAL_PORTED_MEMORY( void )
403{
404  if ( !SYSINIT_IS_ADJACENT( CLASSIC_REGION, CLASSIC_DUAL_PORTED_MEMORY ) ) {
405    printk( "sysinit: CLASSIC_DUAL_PORTED_MEMORY: done\n" );
406  }
407}
408
409static void _Sysinit_Verbose_CLASSIC_RATE_MONOTONIC( void )
410{
411  if (
412    !SYSINIT_IS_ADJACENT(
413      CLASSIC_DUAL_PORTED_MEMORY,
414      CLASSIC_RATE_MONOTONIC
415    )
416  ) {
417    printk( "sysinit: CLASSIC_RATE_MONOTONIC: done\n" );
418  }
419}
420
421static void _Sysinit_Verbose_CLASSIC_BARRIER( void )
422{
423  if ( !SYSINIT_IS_ADJACENT( CLASSIC_RATE_MONOTONIC, CLASSIC_BARRIER ) ) {
424    printk( "sysinit: CLASSIC_BARRIER: done\n" );
425  }
426}
427
428static void _Sysinit_Verbose_POSIX_SIGNALS( void )
429{
430  if ( !SYSINIT_IS_ADJACENT( CLASSIC_BARRIER, POSIX_SIGNALS ) ) {
431    printk( "sysinit: POSIX_SIGNALS: done\n" );
432  }
433}
434
435static void _Sysinit_Verbose_POSIX_THREADS( void )
436{
437  if ( !SYSINIT_IS_ADJACENT( POSIX_SIGNALS, POSIX_THREADS ) ) {
438    printk( "sysinit: POSIX_THREADS: done\n" );
439  }
440}
441
442static void _Sysinit_Verbose_POSIX_MESSAGE_QUEUE( void )
443{
444  if ( !SYSINIT_IS_ADJACENT( POSIX_THREADS, POSIX_MESSAGE_QUEUE ) ) {
445    printk( "sysinit: POSIX_MESSAGE_QUEUE: done\n" );
446  }
447}
448
449static void _Sysinit_Verbose_POSIX_SEMAPHORE( void )
450{
451  if ( !SYSINIT_IS_ADJACENT( POSIX_MESSAGE_QUEUE, POSIX_SEMAPHORE ) ) {
452    printk( "sysinit: POSIX_SEMAPHORE: done\n" );
453  }
454}
455
456static void _Sysinit_Verbose_POSIX_TIMER( void )
457{
458  if ( !SYSINIT_IS_ADJACENT( POSIX_SEMAPHORE, POSIX_TIMER ) ) {
459    printk( "sysinit: POSIX_TIMER: done\n" );
460  }
461}
462
463static void _Sysinit_Verbose_POSIX_SHM( void )
464{
465  if ( !SYSINIT_IS_ADJACENT( POSIX_TIMER, POSIX_SHM ) ) {
466    printk( "sysinit: POSIX_SHM: done\n" );
467  }
468}
469
470static void _Sysinit_Verbose_POSIX_KEYS( void )
471{
472  if ( !SYSINIT_IS_ADJACENT( POSIX_SHM, POSIX_KEYS ) ) {
473    printk( "sysinit: POSIX_KEYS: done\n" );
474  }
475}
476
477static void _Sysinit_Verbose_POSIX_CLEANUP( void )
478{
479  if ( !SYSINIT_IS_ADJACENT( POSIX_KEYS, POSIX_CLEANUP ) ) {
480    printk( "sysinit: POSIX_CLEANUP: done\n" );
481  }
482}
483
484static void _Sysinit_Verbose_IDLE_THREADS( void )
485{
486  if ( !SYSINIT_IS_ADJACENT( POSIX_CLEANUP, IDLE_THREADS ) ) {
487    printk( "sysinit: IDLE_THREADS: done\n" );
488  }
489}
490
491static void _Sysinit_Verbose_LIBIO( void )
492{
493  if ( !SYSINIT_IS_ADJACENT( IDLE_THREADS, LIBIO ) ) {
494    printk( "sysinit: LIBIO: done\n" );
495  }
496}
497
498static void _Sysinit_Verbose_USER_ENVIRONMENT( void )
499{
500  if ( !SYSINIT_IS_ADJACENT( LIBIO, USER_ENVIRONMENT ) ) {
501    printk( "sysinit: USER_ENVIRONMENT: done\n" );
502  }
503}
504
505static void _Sysinit_Verbose_ROOT_FILESYSTEM( void )
506{
507  if ( !SYSINIT_IS_ADJACENT( USER_ENVIRONMENT, ROOT_FILESYSTEM ) ) {
508    printk( "sysinit: ROOT_FILESYSTEM: done\n" );
509  }
510}
511
512static void _Sysinit_Verbose_DRVMGR( void )
513{
514  if ( !SYSINIT_IS_ADJACENT( ROOT_FILESYSTEM, DRVMGR ) ) {
515    printk( "sysinit: DRVMGR: done\n" );
516  }
517}
518
519static void _Sysinit_Verbose_MP_SERVER( void )
520{
521  if ( !SYSINIT_IS_ADJACENT( DRVMGR, MP_SERVER ) ) {
522    printk( "sysinit: MP_SERVER: done\n" );
523  }
524}
525
526static void _Sysinit_Verbose_BSP_PRE_DRIVERS( void )
527{
528  if ( !SYSINIT_IS_ADJACENT( MP_SERVER, BSP_PRE_DRIVERS ) ) {
529    printk( "sysinit: BSP_PRE_DRIVERS: done\n" );
530  }
531}
532
533static void _Sysinit_Verbose_DRVMGR_LEVEL_1( void )
534{
535  if ( !SYSINIT_IS_ADJACENT( BSP_PRE_DRIVERS, DRVMGR_LEVEL_1 ) ) {
536    printk( "sysinit: DRVMGR_LEVEL_1: done\n" );
537  }
538}
539
540static void _Sysinit_Verbose_DEVICE_DRIVERS( void )
541{
542  if ( !SYSINIT_IS_ADJACENT( DRVMGR_LEVEL_1, DEVICE_DRIVERS ) ) {
543    printk( "sysinit: DEVICE_DRIVERS: done\n" );
544  }
545}
546
547static void _Sysinit_Verbose_DRVMGR_LEVEL_2( void )
548{
549  if ( !SYSINIT_IS_ADJACENT( DEVICE_DRIVERS, DRVMGR_LEVEL_2 ) ) {
550    printk( "sysinit: DRVMGR_LEVEL_2: done\n" );
551  }
552}
553
554static void _Sysinit_Verbose_DRVMGR_LEVEL_3( void )
555{
556  if ( !SYSINIT_IS_ADJACENT( DRVMGR_LEVEL_2, DRVMGR_LEVEL_3 ) ) {
557    printk( "sysinit: DRVMGR_LEVEL_3: done\n" );
558  }
559}
560
561static void _Sysinit_Verbose_DRVMGR_LEVEL_4( void )
562{
563  if ( !SYSINIT_IS_ADJACENT( DRVMGR_LEVEL_3, DRVMGR_LEVEL_4 ) ) {
564    printk( "sysinit: DRVMGR_LEVEL_4: done\n" );
565  }
566}
567
568static void _Sysinit_Verbose_MP_FINALIZE( void )
569{
570  if ( !SYSINIT_IS_ADJACENT( DRVMGR_LEVEL_4, MP_FINALIZE ) ) {
571    printk( "sysinit: MP_FINALIZE: done\n" );
572  }
573}
574
575static void _Sysinit_Verbose_CLASSIC_USER_TASKS( void )
576{
577  if ( !SYSINIT_IS_ADJACENT( MP_FINALIZE, CLASSIC_USER_TASKS ) ) {
578    printk( "sysinit: CLASSIC_USER_TASKS: done\n" );
579  }
580}
581
582static void _Sysinit_Verbose_POSIX_USER_THREADS( void )
583{
584  if ( !SYSINIT_IS_ADJACENT( CLASSIC_USER_TASKS, POSIX_USER_THREADS ) ) {
585    printk( "sysinit: POSIX_USER_THREADS: done\n" );
586  }
587}
588
589static void _Sysinit_Verbose_STD_FILE_DESCRIPTORS( void )
590{
591  if ( !SYSINIT_IS_ADJACENT( POSIX_USER_THREADS, STD_FILE_DESCRIPTORS ) ) {
592    printk( "sysinit: STD_FILE_DESCRIPTORS: done\n" );
593  }
594}
595
596static void _Sysinit_Verbose_LAST( void )
597{
598  printk( "sysinit: done\n" );
599}
Note: See TracBrowser for help on using the repository browser.