00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #ifndef _POSIX_SIG_H
00021 #define _POSIX_SIG_H
00022 
00023 #include <posix/thread.h>
00024 
00025 #define SIGACTION_FLAGS (SA_ONESHOT|SA_NOMASK|SA_SIGINFO)
00026 
00027 typedef struct {
00028     siginfo_t info;
00029     xnpholder_t link;
00030 
00031 #define link2siginfo(iaddr) \
00032     ((pse51_siginfo_t *)(((char *)iaddr) - offsetof(pse51_siginfo_t, link)))
00033 
00034 } pse51_siginfo_t;
00035 
00036 
00037 
00038 int pse51_sigqueue_inner(pthread_t thread, pse51_siginfo_t *si);
00039 
00040 void pse51_sigunqueue(pthread_t thread, pse51_siginfo_t *si);
00041 
00042 void pse51_signal_init_thread(pthread_t new, const pthread_t parent);
00043 
00044 void pse51_signal_cleanup_thread(pthread_t zombie);
00045 
00046 void pse51_signal_handle_request(pthread_t thread);
00047 
00048 void pse51_signal_pkg_init(void);
00049 
00050 void pse51_signal_pkg_cleanup(void);
00051 
00052 #endif