83ff8393455a2a77e9302e605fd1da7f2de3b131
[people/pcmattman/gpxe.git] / src / include / gpxe / process.h
1 #ifndef _GPXE_PROCESS_H
2 #define _GPXE_PROCESS_H
3
4 /** @file
5  *
6  * Processes
7  *
8  */
9
10 #include <gpxe/list.h>
11
12 /** A process */
13 struct process {
14         /** List of processes */
15         struct list_head list;
16         /**
17          * Single-step the process
18          *
19          * This method should execute a single step of the process.
20          * Returning from this method is isomorphic to yielding the
21          * CPU to another process.
22          *
23          * If the process wishes to be executed again, it must re-add
24          * itself to the run queue using schedule().
25          */
26         void ( * step ) ( struct process *process );
27 };
28
29 extern void schedule ( struct process *process );
30 extern void step ( void );
31
32 #endif /* _GPXE_PROCESS_H */