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/include/gpxe/process.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/include/gpxe/process.h') diff --git a/src/include/gpxe/process.h b/src/include/gpxe/process.h index c0837fa4f..595787c0f 100644 --- a/src/include/gpxe/process.h +++ b/src/include/gpxe/process.h @@ -9,6 +9,7 @@ #include #include +#include /** 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 */ -- cgit v1.2.3-55-g7522