[iSCSI] Support Windows Server 2008 direct iSCSI installation
[people/sha0/gpxe.git] / src / include / gpxe / init.h
1 #ifndef _GPXE_INIT_H
2 #define _GPXE_INIT_H
3
4 #include <gpxe/tables.h>
5
6 /**
7  * An initialisation function
8  *
9  * Initialisation functions are called exactly once, as part of the
10  * call to initialise().
11  */
12 struct init_fn {
13         void ( * initialise ) ( void );
14 };
15
16 /** Declare an initialisation functon */
17 #define __init_fn( init_order ) \
18         __table ( struct init_fn, init_fns, init_order )
19
20 /** @defgroup initfn_order Initialisation function ordering
21  * @{
22  */
23
24 #define INIT_EARLY      01      /**< Early initialisation */
25 #define INIT_SERIAL     02      /**< Serial driver initialisation */
26 #define INIT_CONSOLE    03      /**< Console initialisation */
27 #define INIT_NORMAL     04      /**< Normal initialisation */
28
29 /** @} */
30
31 /** Shutdown flags */
32 enum shutdown_flags {
33         /** Shutdown is in order to exit (return to gPXE's caller) */
34         SHUTDOWN_EXIT = 0x0001,
35         /** Shutdown is in order to boot an OS */
36         SHUTDOWN_BOOT = 0x0002,
37         /** Do not remove devices */
38         SHUTDOWN_KEEP_DEVICES = 0x0004,
39 };
40
41 /**
42  * A startup/shutdown function
43  *
44  * Startup and shutdown functions may be called multiple times, as
45  * part of the calls to startup() and shutdown().
46  */
47 struct startup_fn {
48         void ( * startup ) ( void );
49         void ( * shutdown ) ( int flags );
50 };
51
52 /** Declare a startup/shutdown function */
53 #define __startup_fn( startup_order ) \
54         __table ( struct startup_fn, startup_fns, startup_order )
55
56 /** @defgroup startfn_order Startup/shutdown function ordering
57  *
58  * Shutdown functions are called in the reverse order to startup
59  * functions.
60  *
61  * @{
62  */
63
64 #define STARTUP_EARLY   01      /**< Early startup */
65 #define STARTUP_NORMAL  02      /**< Normal startup */
66
67 /** @} */
68
69 extern void initialise ( void );
70 extern void startup ( void );
71 extern void shutdown ( int flags );
72
73 #endif /* _GPXE_INIT_H */