1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
#ifndef SIGSCHED_H
#define SIGSCHED_H
typedef struct
{
int type;
union { int n; char *c; } u;
}
ss_sig;
typedef int ss_id;
typedef char *ss_idptr;
typedef void ss_threadi(ss_id);
typedef void ss_threadp(ss_idptr);
typedef union { ss_threadi *i; ss_threadp *p; } ss_thread;
extern ss_sig *ss_asap(void);
extern ss_sig *ss_sigread(int fd);
extern ss_sig *ss_sigwrite(int fd);
extern int ss_addsig(int i);
extern int ss_schedvwait(ss_sig *sig, ss_thread t, int flagi, ss_id i, ss_idptr p, int wait);
[[maybe_unused]] static int ss_schedwait(ss_sig *sig, ss_thread t, ss_id i, int wait)
{
return ss_schedvwait(sig,t,1,i,(ss_idptr) 0,wait);
}
extern int ss_schedonce(ss_sig *sig, ss_thread t, ss_id i);
extern int ss_unschedv(ss_sig *sig, ss_thread t, int flagi, ss_id i, ss_idptr p);
[[maybe_unused]] static int ss_unsched(ss_sig *sig, ss_thread t, ss_id i)
{
return ss_unschedv(sig,t,1,i,(ss_idptr) 0);
}
extern int ss_exec(void);
#endif
|