diff options
author | Michael Brown | 2007-07-03 21:09:14 +0200 |
---|---|---|
committer | Michael Brown | 2007-07-03 21:09:14 +0200 |
commit | fd86c819ba559760b9bf7eaca1b21a0fd81ef6b6 (patch) | |
tree | ba4c0aa4612bed0a66d420a93356df09316214e0 /src/core/process.c | |
parent | Merge branch 'master' of /pub/scm/gpxe (diff) | |
download | ipxe-fd86c819ba559760b9bf7eaca1b21a0fd81ef6b6.tar.gz ipxe-fd86c819ba559760b9bf7eaca1b21a0fd81ef6b6.tar.xz ipxe-fd86c819ba559760b9bf7eaca1b21a0fd81ef6b6.zip |
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.
Diffstat (limited to 'src/core/process.c')
-rw-r--r-- | src/core/process.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/core/process.c b/src/core/process.c index 0583a398..bd35e614 100644 --- a/src/core/process.c +++ b/src/core/process.c @@ -30,6 +30,12 @@ /** Process run queue */ static LIST_HEAD ( run_queue ); +/** Registered permanent processes */ +static struct process processes[0] + __table_start ( struct process, processes ); +static struct process processes_end[0] + __table_end ( struct process, processes ); + /** * Add process to process list * @@ -72,3 +78,15 @@ void step ( void ) { break; } } + +/** + * Initialise processes + * + */ +void init_processes ( void ) { + struct process *process; + + for ( process = processes ; process < processes_end ; process++ ) { + process_add ( process ); + } +} |