59 typedef unsigned char process_event_t;
60 typedef void * process_data_t;
61 typedef unsigned char process_num_events_t;
74 #define PROCESS_ERR_OK 0
82 #define PROCESS_ERR_FULL 1
85 #define PROCESS_NONE NULL
87 #ifndef PROCESS_CONF_NUMEVENTS
88 #define PROCESS_CONF_NUMEVENTS 32
91 #define PROCESS_EVENT_NONE 0x80
92 #define PROCESS_EVENT_INIT 0x81
93 #define PROCESS_EVENT_POLL 0x82
94 #define PROCESS_EVENT_EXIT 0x83
95 #define PROCESS_EVENT_SERVICE_REMOVED 0x84
96 #define PROCESS_EVENT_CONTINUE 0x85
97 #define PROCESS_EVENT_MSG 0x86
98 #define PROCESS_EVENT_EXITED 0x87
99 #define PROCESS_EVENT_TIMER 0x88
100 #define PROCESS_EVENT_COM 0x89
101 #define PROCESS_EVENT_MAX 0x8a
103 #define PROCESS_BROADCAST NULL
104 #define PROCESS_ZOMBIE ((struct process *)0x1)
120 #define PROCESS_BEGIN() PT_BEGIN(process_pt)
131 #define PROCESS_END() PT_END(process_pt)
141 #define PROCESS_WAIT_EVENT() PROCESS_YIELD()
157 #define PROCESS_WAIT_EVENT_UNTIL(c) PROCESS_YIELD_UNTIL(c)
164 #define PROCESS_YIELD() PT_YIELD(process_pt)
178 #define PROCESS_YIELD_UNTIL(c) PT_YIELD_UNTIL(process_pt, c)
192 #define PROCESS_WAIT_UNTIL(c) PT_WAIT_UNTIL(process_pt, c)
193 #define PROCESS_WAIT_WHILE(c) PT_WAIT_WHILE(process_pt, c)
200 #define PROCESS_EXIT() PT_EXIT(process_pt)
211 #define PROCESS_PT_SPAWN(pt, thread) PT_SPAWN(process_pt, pt, thread)
221 #define PROCESS_PAUSE() do { \
222 process_post(PROCESS_CURRENT(), PROCESS_EVENT_CONTINUE, NULL); \
223 PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_CONTINUE); \
242 #define PROCESS_POLLHANDLER(handler) if(ev == PROCESS_EVENT_POLL) { handler; }
254 #define PROCESS_EXITHANDLER(handler) if(ev == PROCESS_EVENT_EXIT) { handler; }
273 #define PROCESS_THREAD(name, ev, data) \
274 static PT_THREAD(process_thread_##name(struct pt *process_pt, \
275 process_event_t ev, \
276 process_data_t data))
286 #define PROCESS_NAME(name) extern struct process name
301 #if PROCESS_CONF_NO_PROCESS_NAMES
302 #define PROCESS(name, strname) \
303 PROCESS_THREAD(name, ev, data); \
304 struct process name = { NULL, \
305 process_thread_##name }
307 #define PROCESS(name, strname) \
308 PROCESS_THREAD(name, ev, data); \
309 struct process name = { NULL, strname, \
310 process_thread_##name }
316 struct process *next;
317 #if PROCESS_CONF_NO_PROCESS_NAMES
318 #define PROCESS_NAME_STRING(process) ""
321 #define PROCESS_NAME_STRING(process) (process)->name
323 PT_THREAD((* thread)(
struct pt *, process_event_t, process_data_t));
325 unsigned char state, needspoll;
378 process_event_t ev,
void* data);
402 #define PROCESS_CURRENT() process_current
403 CCIF extern struct process *process_current;
426 #define PROCESS_CONTEXT_BEGIN(p) {\
427 struct process *tmp_current = PROCESS_CURRENT();\
440 #define PROCESS_CONTEXT_END(p) process_current = tmp_current; }
524 CCIF extern struct process *process_list;
526 #define PROCESS_LIST() process_list