mirror of
https://github.com/xcat2/xNBA.git
synced 2026-05-13 18:04:11 +00:00
03c80c12b8
Add yet another ugly hack to iscsiboot.c, this time to allow the user to inhibit the shutdown/removal of the iSCSI INT13 device (and the network devices, since they are required for the iSCSI device to function). On the plus side, the fact that shutdown() now takes flags to differentiate between shutdown-for-exit and shutdown-for-boot means that another ugly hack (to allow returning via the PXE stack on BIOSes that have broken INT 18 calls) will be easier. I feel dirty.
74 lines
1.7 KiB
C
74 lines
1.7 KiB
C
#ifndef _GPXE_INIT_H
|
|
#define _GPXE_INIT_H
|
|
|
|
#include <gpxe/tables.h>
|
|
|
|
/**
|
|
* An initialisation function
|
|
*
|
|
* Initialisation functions are called exactly once, as part of the
|
|
* call to initialise().
|
|
*/
|
|
struct init_fn {
|
|
void ( * initialise ) ( void );
|
|
};
|
|
|
|
/** Declare an initialisation functon */
|
|
#define __init_fn( init_order ) \
|
|
__table ( struct init_fn, init_fns, init_order )
|
|
|
|
/** @defgroup initfn_order Initialisation function ordering
|
|
* @{
|
|
*/
|
|
|
|
#define INIT_EARLY 01 /**< Early initialisation */
|
|
#define INIT_SERIAL 02 /**< Serial driver initialisation */
|
|
#define INIT_CONSOLE 03 /**< Console initialisation */
|
|
#define INIT_NORMAL 04 /**< Normal initialisation */
|
|
|
|
/** @} */
|
|
|
|
/** Shutdown flags */
|
|
enum shutdown_flags {
|
|
/** Shutdown is in order to exit (return to gPXE's caller) */
|
|
SHUTDOWN_EXIT = 0x0001,
|
|
/** Shutdown is in order to boot an OS */
|
|
SHUTDOWN_BOOT = 0x0002,
|
|
/** Do not remove devices */
|
|
SHUTDOWN_KEEP_DEVICES = 0x0004,
|
|
};
|
|
|
|
/**
|
|
* A startup/shutdown function
|
|
*
|
|
* Startup and shutdown functions may be called multiple times, as
|
|
* part of the calls to startup() and shutdown().
|
|
*/
|
|
struct startup_fn {
|
|
void ( * startup ) ( void );
|
|
void ( * shutdown ) ( int flags );
|
|
};
|
|
|
|
/** Declare a startup/shutdown function */
|
|
#define __startup_fn( startup_order ) \
|
|
__table ( struct startup_fn, startup_fns, startup_order )
|
|
|
|
/** @defgroup startfn_order Startup/shutdown function ordering
|
|
*
|
|
* Shutdown functions are called in the reverse order to startup
|
|
* functions.
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
#define STARTUP_EARLY 01 /**< Early startup */
|
|
#define STARTUP_NORMAL 02 /**< Normal startup */
|
|
|
|
/** @} */
|
|
|
|
extern void initialise ( void );
|
|
extern void startup ( void );
|
|
extern void shutdown ( int flags );
|
|
|
|
#endif /* _GPXE_INIT_H */
|