mirror of
https://github.com/ipxe/ipxe
synced 2025-12-16 17:41:18 +03:00
Merged mcb30-realmode-redesign back to HEAD
This commit is contained in:
44
src/core/init.c
Normal file
44
src/core/init.c
Normal file
@@ -0,0 +1,44 @@
|
||||
/**************************************************************************
|
||||
* call_{init,reset,exit}_fns ()
|
||||
*
|
||||
* Call the various initialisation and exit functions. We use a
|
||||
* function table so that we don't end up dragging in an object just
|
||||
* because we call its initialisation function.
|
||||
**************************************************************************
|
||||
*/
|
||||
|
||||
#include "init.h"
|
||||
|
||||
extern struct init_fn init_fns[];
|
||||
extern struct init_fn init_fns_end[];
|
||||
|
||||
void call_init_fns ( void ) {
|
||||
struct init_fn *init_fn;
|
||||
|
||||
for ( init_fn = init_fns; init_fn < init_fns_end ; init_fn++ ) {
|
||||
if ( init_fn->init )
|
||||
init_fn->init ();
|
||||
}
|
||||
}
|
||||
|
||||
void call_reset_fns ( void ) {
|
||||
struct init_fn *init_fn;
|
||||
|
||||
for ( init_fn = init_fns; init_fn < init_fns_end ; init_fn++ ) {
|
||||
if ( init_fn->reset )
|
||||
init_fn->reset ();
|
||||
}
|
||||
}
|
||||
|
||||
void call_exit_fns ( void ) {
|
||||
struct init_fn *init_fn;
|
||||
|
||||
/*
|
||||
* Exit functions are called in reverse order to
|
||||
* initialisation functions.
|
||||
*/
|
||||
for ( init_fn = init_fns_end - 1; init_fn >= init_fns ; init_fn-- ) {
|
||||
if ( init_fn->exit )
|
||||
init_fn->exit ();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user