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/init.h | 1 - src/include/gpxe/process.h | 11 +++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'src/include') diff --git a/src/include/gpxe/init.h b/src/include/gpxe/init.h index bd4cd97d4..b13674ec7 100644 --- a/src/include/gpxe/init.h +++ b/src/include/gpxe/init.h @@ -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 ) \ 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