From fd86c819ba559760b9bf7eaca1b21a0fd81ef6b6 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 3 Jul 2007 20:09:14 +0100 Subject: 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. --- src/core/process.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/core/process.c') diff --git a/src/core/process.c b/src/core/process.c index 0583a398c..bd35e614f 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 ); + } +} -- cgit v1.2.3-55-g7522