mirror of
https://github.com/ipxe/ipxe
synced 2025-12-22 04:50:25 +03:00
Use a linker-table based system to automatically mark and start up
permanent processes, rather than requiring each one to have its own initialisation function.
This commit is contained in:
@@ -42,7 +42,6 @@ struct init_fn {
|
||||
#define INIT_LOADBUF 08
|
||||
#define INIT_PCMCIA 09
|
||||
#define INIT_RPC 11
|
||||
#define INIT_PROCESS 12
|
||||
|
||||
/* Macro for creating an initialisation function table entry */
|
||||
#define INIT_FN( init_order, init_func, reset_func, exit_func ) \
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include <gpxe/list.h>
|
||||
#include <gpxe/refcnt.h>
|
||||
#include <gpxe/tables.h>
|
||||
|
||||
/** A process */
|
||||
struct process {
|
||||
@@ -33,6 +34,7 @@ struct process {
|
||||
extern void process_add ( struct process *process );
|
||||
extern void process_del ( struct process *process );
|
||||
extern void step ( void );
|
||||
extern void init_processes ( void );
|
||||
|
||||
/**
|
||||
* Initialise process without adding to process list
|
||||
@@ -62,4 +64,13 @@ process_init ( struct process *process,
|
||||
process_add ( process );
|
||||
}
|
||||
|
||||
/**
|
||||
* Declare a permanent process
|
||||
*
|
||||
* Permanent processes will be automatically added to the process list
|
||||
* at initialisation time.
|
||||
*/
|
||||
#define __permanent_process \
|
||||
__table ( struct process, processes, 01 )
|
||||
|
||||
#endif /* _GPXE_PROCESS_H */
|
||||
|
||||
Reference in New Issue
Block a user