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:
Michael Brown
2007-07-03 20:09:14 +01:00
parent 4bcfe7507b
commit fd86c819ba
6 changed files with 35 additions and 18 deletions

View File

@@ -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 );
}
}