api: add sched.c .. signal.c
authornsz <nsz@port70.net>
Sun, 14 Oct 2012 20:49:47 +0000 (22:49 +0200)
committernsz <nsz@port70.net>
Sun, 14 Oct 2012 20:49:47 +0000 (22:49 +0200)
src/api/sched.c [new file with mode: 0644]
src/api/search.c [new file with mode: 0644]
src/api/semaphore.c [new file with mode: 0644]
src/api/setjmp.c [new file with mode: 0644]
src/api/signal.c [new file with mode: 0644]

diff --git a/src/api/sched.c b/src/api/sched.c
new file mode 100644 (file)
index 0000000..0a130ae
--- /dev/null
@@ -0,0 +1,30 @@
+#include <sched.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(pid_t)
+T(time_t)
+T(struct timespec)
+{
+struct sched_param x;
+F(int,sched_priority)
+F(int,sched_ss_low_priority)
+F(struct timespec,sched_ss_repl_period)
+F(struct timespec,sched_ss_init_budget)
+F(int,sched_ss_max_repl)
+}
+C(SCHED_FIFO)
+C(SCHED_RR)
+C(SCHED_SPORADIC)
+C(SCHED_OTHER)
+int(*p_sched_get_priority_max)(int) = sched_get_priority_max;
+int(*p_sched_get_priority_min)(int) = sched_get_priority_min;
+int(*p_sched_getparam)(pid_t,struct sched_param*) = sched_getparam;
+int(*p_sched_getscheduler)(pid_t) = sched_getscheduler;
+int(*p_sched_rr_get_interval)(pid_t,struct timespec*) = sched_rr_get_interval;
+int(*p_sched_setparam)(pid_t,const struct sched_param*) = sched_setparam;
+int(*p_sched_setscheduler)(pid_t,int,const struct sched_param*) = sched_setscheduler;
+int(*p_sched_yield)(void) = sched_yield;
+}
diff --git a/src/api/search.c b/src/api/search.c
new file mode 100644 (file)
index 0000000..a92a259
--- /dev/null
@@ -0,0 +1,36 @@
+#include <search.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(size_t)
+T(ACTION)
+T(VISIT)
+{
+ENTRY x;
+F(char*,key)
+F(void*,data)
+}
+switch((ACTION)0){
+case FIND:
+case ENTER:;
+}
+switch((VISIT)0){
+case preorder:
+case postorder:
+case endorder:
+case leaf:;
+}
+int(*p_hcreate)(size_t) = hcreate;
+void(*p_hdestroy)(void) = hdestroy;
+ENTRY*(*p_hsearch)(ENTRY,ACTION) = hsearch;
+void(*p_insque)(void*,void*) = insque;
+void*(*p_lfind)(const void*,const void*,size_t*,size_t,int(*)(const void*,const void*)) = lfind;
+void*(*p_lsearch)(const void*,void*,size_t*,size_t,int(*)(const void*,const void*)) = lsearch;
+void(*p_remque)(void*) = remque;
+void*(*p_tdelete)(const void*restrict,void**restrict,int(*)(const void*,const void*)) = tdelete;
+void*(*p_tfind)(const void*,void*const*,int(*)(const void*,const void*)) = tfind;
+void*(*p_tsearch)(const void*,void**,int(*)(const void*,const void*)) = tsearch;
+void(*p_twalk)(const void*,void(*)(const void*,VISIT,int)) = twalk;
+}
diff --git a/src/api/semaphore.c b/src/api/semaphore.c
new file mode 100644 (file)
index 0000000..700002a
--- /dev/null
@@ -0,0 +1,16 @@
+#include <semaphore.h>
+static void f()
+{
+{sem_t *x = SEM_FAILED;}
+int(*p_sem_close)(sem_t*) = sem_close;
+int(*p_sem_destroy)(sem_t*) = sem_destroy;
+int(*p_sem_getvalue)(sem_t*restrict,int*restrict) = sem_getvalue;
+int(*p_sem_init)(sem_t*,int,unsigned) = sem_init;
+sem_t*(*p_sem_open)(const char*,int,...) = sem_open;
+int(*p_sem_post)(sem_t*) = sem_post;
+int(*p_sem_trywait)(sem_t*) = sem_trywait;
+int(*p_sem_unlink)(const char*) = sem_unlink;
+int(*p_sem_wait)(sem_t*) = sem_wait;
+#include <time.h>
+int(*p_sem_timedwait)(sem_t*restrict,const struct timespec*restrict) = sem_timedwait;
+}
diff --git a/src/api/setjmp.c b/src/api/setjmp.c
new file mode 100644 (file)
index 0000000..c4178c3
--- /dev/null
@@ -0,0 +1,13 @@
+#include <setjmp.h>
+#define T(t) (t*)0;
+static void f()
+{
+T(jmp_buf)
+void(*p_longjmp)(jmp_buf,int) = longjmp;
+int(*p_setjmp)(jmp_buf) = setjmp;
+#ifdef _POSIX_C_SOURCE
+T(sigjmp_buf)
+void(*p_siglongjmp)(sigjmp_buf,int) = siglongjmp;
+int(*p_sigsetjmp)(sigjmp_buf,int) = sigsetjmp;
+#endif
+}
diff --git a/src/api/signal.c b/src/api/signal.c
new file mode 100644 (file)
index 0000000..264edf4
--- /dev/null
@@ -0,0 +1,183 @@
+#include <signal.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(sig_atomic_t)
+{void(*x)(int) = SIG_DFL;}
+{void(*x)(int) = SIG_ERR;}
+{void(*x)(int) = SIG_IGN;}
+#ifdef _POSIX_C_SOURCE
+{void(*x)(int) = SIG_HOLD;}
+T(size_t)
+T(sigset_t)
+T(pid_t)
+T(uid_t)
+T(pthread_t)
+T(pthread_attr_t)
+T(struct timespec)
+{
+struct sigevent x;
+F(int,sigev_notify)
+F(int,sigev_signo)
+F(union sigval,sigev_value)
+{void (**y)(union sigval) = &x.sigev_notify_function;}
+F(pthread_attr_t*,sigev_notify_attributes)
+}
+C(SIGEV_NONE)
+C(SIGEV_SIGNAL)
+C(SIGEV_THREAD)
+{
+union sigval x;
+F(int,sival_int)
+F(void*,sival_ptr)
+}
+{int i = SIGRTMIN;}
+{int i = SIGRTMAX;}
+#endif
+C(SIGABRT)
+C(SIGFPE)
+C(SIGILL)
+C(SIGINT)
+C(SIGSEGV)
+C(SIGTERM)
+#ifdef _POSIX_C_SOURCE
+C(SIGALRM)
+C(SIGBUS)
+C(SIGCHLD)
+C(SIGCONT)
+C(SIGHUP)
+C(SIGKILL)
+C(SIGPIPE)
+C(SIGQUIT)
+C(SIGSTOP)
+C(SIGTSTP)
+C(SIGTTIN)
+C(SIGTTOU)
+C(SIGUSR1)
+C(SIGUSR2)
+C(SIGURG)
+#ifdef _XOPEN_SOURCE
+C(SIGSYS)
+C(SIGTRAP)
+C(SIGVTALRM)
+C(SIGXCPU)
+C(SIGXFSZ)
+#endif
+{
+struct sigaction x;
+{void (**y)(int) = &x.sa_handler;}
+F(sigset_t, sa_mask)
+F(int,sa_flags)
+{void (**y)(int, siginfo_t *, void *) = &x.sa_sigaction;}
+}
+C(SIG_BLOCK)
+C(SIG_UNBLOCK)
+C(SIG_SETMASK)
+C(SA_NOCLDSTOP)
+C(SA_RESETHAND)
+C(SA_RESTART)
+C(SA_SIGINFO)
+C(SA_NOCLDWAIT)
+C(SA_NODEFER)
+#ifdef _XOPEN_SOURCE
+C(SA_ONSTACK)
+C(SS_ONSTACK)
+C(SS_DISABLE)
+C(MINSIGSTKSZ)
+C(SIGSTKSZ)
+#endif
+T(mcontext_t)
+{
+ucontext_t x;
+F(ucontext_t*,uc_link)
+F(sigset_t,uc_sigmask)
+F(stack_t, uc_stack)
+F(mcontext_t,uc_mcontext)
+}
+{
+stack_t x;
+F(void *,ss_sp)
+F(size_t,ss_size)
+F(int, ss_flags)
+}
+{
+siginfo_t x;
+F(int, si_signo)
+F(int, si_code)
+#ifdef _XOPEN_SOURCE
+F(int, si_errno)
+#endif
+F(pid_t, si_pid)
+F(uid_t, si_uid)
+F(void *,si_addr)
+F(int, si_status)
+F(union sigval,si_value)
+}
+C(ILL_ILLOPC)
+C(ILL_ILLOPN)
+C(ILL_ILLADR)
+C(ILL_ILLTRP)
+C(ILL_PRVOPC)
+C(ILL_PRVREG)
+C(ILL_COPROC)
+C(ILL_BADSTK)
+C(FPE_INTDIV)
+C(FPE_INTOVF)
+C(FPE_FLTDIV)
+C(FPE_FLTOVF)
+C(FPE_FLTUND)
+C(FPE_FLTRES)
+C(FPE_FLTINV)
+C(FPE_FLTSUB)
+C(SEGV_MAPERR)
+C(SEGV_ACCERR)
+C(BUS_ADRALN)
+C(BUS_ADRERR)
+C(BUS_OBJERR)
+#ifdef _XOPEN_SOURCE
+C(TRAP_BRKPT)
+C(TRAP_TRACE)
+#endif
+C(CLD_EXITED)
+C(CLD_KILLED)
+C(CLD_DUMPED)
+C(CLD_TRAPPED)
+C(CLD_STOPPED)
+C(CLD_CONTINUED)
+C(SI_USER)
+C(SI_QUEUE)
+C(SI_TIMER)
+C(SI_ASYNCIO)
+C(SI_MESGQ)
+int(*p_kill)(pid_t,int) = kill;
+int(*p_killpg)(pid_t,int) = killpg;
+void(*p_psiginfo)(const siginfo_t*,const char*) = psiginfo;
+void(*p_psignal)(int,const char*) = psignal;
+int(*p_pthread_kill)(pthread_t,int) = pthread_kill;
+int(*p_pthread_sigmask)(int,const sigset_t*restrict,sigset_t*restrict) = pthread_sigmask;
+int(*p_sigaction)(int,const struct sigaction*restrict,struct sigaction*restrict) = sigaction;
+int(*p_sigaddset)(sigset_t*,int) = sigaddset;
+int(*p_sigaltstack)(const stack_t*restrict,stack_t*restrict) = sigaltstack;
+int(*p_sigdelset)(sigset_t*,int) = sigdelset;
+int(*p_sigemptyset)(sigset_t*) = sigemptyset;
+int(*p_sigfillset)(sigset_t*) = sigfillset;
+int(*p_sighold)(int) = sighold;
+int(*p_sigignore)(int) = sigignore;
+int(*p_siginterrupt)(int,int) = siginterrupt;
+int(*p_sigismember)(const sigset_t*,int) = sigismember;
+int(*p_sigpause)(int) = sigpause;
+int(*p_sigpending)(sigset_t*) = sigpending;
+int(*p_sigprocmask)(int,const sigset_t*restrict,sigset_t*restrict) = sigprocmask;
+int(*p_sigqueue)(pid_t,int,const union sigval) = sigqueue;
+int(*p_sigrelse)(int) = sigrelse;
+void(*(*p_sigset)(int,void(*)(int)))(int) = sigset;
+int(*p_sigsuspend)(const sigset_t*) = sigsuspend;
+int(*p_sigtimedwait)(const sigset_t*restrict,siginfo_t*restrict,const struct timespec*restrict) = sigtimedwait;
+int(*p_sigwait)(const sigset_t*restrict,int*restrict) = sigwait;
+int(*p_sigwaitinfo)(const sigset_t*restrict,siginfo_t*restrict) = sigwaitinfo;
+#endif
+int(*p_raise)(int) = raise;
+void(*(*p_signal)(int,void(*)(int)))(int) = signal;
+}