23c494d14e
Yes, you really can do it in 65 bytes.
33 lines
653 B
C
33 lines
653 B
C
#ifndef _GPXE_PROCESS_H
|
|
#define _GPXE_PROCESS_H
|
|
|
|
/** @file
|
|
*
|
|
* Processes
|
|
*
|
|
*/
|
|
|
|
#include <gpxe/list.h>
|
|
|
|
/** A process */
|
|
struct process {
|
|
/** List of processes */
|
|
struct list_head list;
|
|
/**
|
|
* Single-step the process
|
|
*
|
|
* This method should execute a single step of the process.
|
|
* Returning from this method is isomorphic to yielding the
|
|
* CPU to another process.
|
|
*
|
|
* If the process wishes to be executed again, it must re-add
|
|
* itself to the run queue using schedule().
|
|
*/
|
|
void ( * step ) ( struct process *process );
|
|
};
|
|
|
|
extern void schedule ( struct process *process );
|
|
extern void step ( void );
|
|
|
|
#endif /* _GPXE_PROCESS_H */
|