diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/stdapis/signal.h --- a/epoc32/include/stdapis/signal.h Wed Mar 31 12:27:01 2010 +0100 +++ b/epoc32/include/stdapis/signal.h Wed Mar 31 12:33:34 2010 +0100 @@ -1,5 +1,4 @@ /*- - * Copyright (c) Symbian Software Ltd 2006-2007. All rights reserved. * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * @@ -27,6 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * + * Portions Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. * @(#)signal.h 8.3 (Berkeley) 3/30/94 * $FreeBSD: src/include/signal.h,v 1.24 2003/03/31 23:30:41 jeff Exp $ */ @@ -35,13 +35,13 @@ #define _SIGNAL_H_ #include -#include +#include #include __BEGIN_DECLS struct timespec; -/* The following definitions have been taken from siglist.c file +/* The following definitions have been taken from siglist.c file * Once signals are implemented then these definitions must be moved to that * file. (sys_signame,sys_siglist,sys_nsig) */ @@ -114,12 +114,97 @@ "User defined signal 1", /* SIGUSR1 */ "User defined signal 2" /* SIGUSR2 */ }; + +#if !defined (SIG_BLOCK) + #define SIG_UNBLOCK 1 + #define SIG_BLOCK 2 + #define SIG_SETMASK 3 +#endif + +/* Type for data associated with a signal. */ +union sigval +{ + int sival_int; + void *sival_ptr; +}; + +typedef struct __siginfo_t +{ + int si_signo; + int si_code; + int si_errno; + pid_t si_pid; + uid_t si_uid; + void *si_addr; + int si_status; + long si_band; + union sigval si_value; +} siginfo_t; + + +typedef struct sigevent +{ + union sigval sigev_value; + int sigev_signo; + int sigev_notify; + + void (*sigev_notify_function) (union sigval); /* Function to start. */ + void *sigev_notify_attributes; /* Really pthread_attr_t. */ +} sigevent_t; + +/* `sigev_notify' values. */ +enum +{ + SIGEV_SIGNAL = 0, /* Notify via signal. */ +# define SIGEV_SIGNAL SIGEV_SIGNAL + SIGEV_NONE, /* Other notification: meaningless. */ +# define SIGEV_NONE SIGEV_NONE + SIGEV_THREAD, /* Deliver via thread creation. */ +# define SIGEV_THREAD SIGEV_THREAD + + SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */ +#define SIGEV_THREAD_ID SIGEV_THREAD_ID +}; + static const int sys_nsig = sizeof(sys_siglist) / sizeof(sys_siglist[0]); IMPORT_C int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); IMPORT_C int sigemptyset(sigset_t* set); +#ifdef SYMBIAN_OE_POSIX_SIGNALS +IMPORT_C int kill(pid_t pid, int sig); +IMPORT_C int raise(int sig); +IMPORT_C int sigqueue(pid_t pid, int sig, const union sigval value); + +IMPORT_C int sigfillset(sigset_t *set); +IMPORT_C int sigaddset(sigset_t *set, int signo); +IMPORT_C int sigdelset(sigset_t *set, int signo); +IMPORT_C int sigismember(const sigset_t *set, int signo); +IMPORT_C int sigandset(sigset_t * set, const sigset_t * left, const sigset_t * right); +IMPORT_C int sigorset(sigset_t * set, const sigset_t * left, const sigset_t * right); +IMPORT_C int sigisemptyset(const sigset_t * set); + +IMPORT_C int sigprocmask(int how, const sigset_t* set,sigset_t* oset); +IMPORT_C int sighold(int signo); +IMPORT_C int sigrelse(int signo); +IMPORT_C int sigpause(int signo); + +IMPORT_C int sigwait(const sigset_t *set, int *sig); +IMPORT_C int sigtimedwait(const sigset_t *set, siginfo_t *info, + const struct timespec *timeout); +IMPORT_C int sigwaitinfo(const sigset_t *set, siginfo_t *info); + +IMPORT_C void (*bsd_signal(int, void (*)(int)))(int); +IMPORT_C void (*sigset(int, void (*)(int)))(int); +IMPORT_C void (*signal(int, void (*)(int)))(int); +IMPORT_C int sigpending(sigset_t *set); +IMPORT_C int sigignore(int sig); +IMPORT_C void psignal(int sig, const char *s); + +IMPORT_C int sigenable(); + +#endif __END_DECLS #endif /* !_SIGNAL_H_ */