2011-02-12 00:22:29 -05:00
|
|
|
#include <signal.h>
|
2011-03-09 19:42:06 -05:00
|
|
|
#include <errno.h>
|
2011-02-12 00:22:29 -05:00
|
|
|
#include "syscall.h"
|
|
|
|
|
2011-03-09 20:07:24 -05:00
|
|
|
int __sigprocmask(int, const sigset_t *, sigset_t *);
|
|
|
|
|
2011-02-12 00:22:29 -05:00
|
|
|
int raise(int sig)
|
|
|
|
{
|
2011-03-09 19:42:06 -05:00
|
|
|
int pid, tid, ret;
|
2011-03-09 20:07:24 -05:00
|
|
|
sigset_t set;
|
|
|
|
sigfillset(&set);
|
|
|
|
__sigprocmask(SIG_BLOCK, &set, &set);
|
2011-03-20 00:16:43 -04:00
|
|
|
tid = syscall(SYS_gettid);
|
|
|
|
pid = syscall(SYS_getpid);
|
|
|
|
ret = syscall(SYS_tgkill, pid, tid, sig);
|
2011-03-09 20:07:24 -05:00
|
|
|
__sigprocmask(SIG_SETMASK, &set, 0);
|
2011-03-09 19:42:06 -05:00
|
|
|
return ret;
|
2011-02-12 00:22:29 -05:00
|
|
|
}
|