We don't actually use the reset functions anywhere, and nothing really
[people/sha0/gpxe.git] / src / core / init.c
1 /**************************************************************************
2  * call_{init,reset,exit}_fns ()
3  * 
4  * Call the various initialisation and exit functions.  We use a
5  * function table so that we don't end up dragging in an object just
6  * because we call its initialisation function.
7  **************************************************************************
8  */
9
10 #include <gpxe/init.h>
11
12 static struct init_fn init_fns[0]
13         __table_start ( struct init_fn, init_fn );
14 static struct init_fn init_fns_end[0]
15         __table_end ( struct init_fn, init_fn );
16
17 void call_init_fns ( void ) {
18         struct init_fn *init_fn;
19
20         for ( init_fn = init_fns; init_fn < init_fns_end ; init_fn++ ) {
21                 if ( init_fn->init )
22                         init_fn->init ();
23         }
24 }
25
26 void call_exit_fns ( void ) {
27         struct init_fn *init_fn;
28
29         /* 
30          * Exit functions are called in reverse order to
31          * initialisation functions.
32          */
33         for ( init_fn = init_fns_end - 1; init_fn >= init_fns ; init_fn-- ) {
34                 if ( init_fn->exit )
35                         init_fn->exit ();
36         }
37 }