| Index: fusl/src/signal/sigqueue.c
|
| diff --git a/fusl/src/signal/sigqueue.c b/fusl/src/signal/sigqueue.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b75f0c5cea42f7f03a23ef3f130d1c507f8c2df4
|
| --- /dev/null
|
| +++ b/fusl/src/signal/sigqueue.c
|
| @@ -0,0 +1,22 @@
|
| +#include <signal.h>
|
| +#include <string.h>
|
| +#include <unistd.h>
|
| +#include "syscall.h"
|
| +#include "pthread_impl.h"
|
| +
|
| +int sigqueue(pid_t pid, int sig, const union sigval value)
|
| +{
|
| + siginfo_t si;
|
| + sigset_t set;
|
| + int r;
|
| + memset(&si, 0, sizeof si);
|
| + si.si_signo = sig;
|
| + si.si_code = SI_QUEUE;
|
| + si.si_value = value;
|
| + si.si_uid = getuid();
|
| + __block_app_sigs(&set);
|
| + si.si_pid = getpid();
|
| + r = syscall(SYS_rt_sigqueueinfo, pid, sig, &si);
|
| + __restore_sigs(&set);
|
| + return r;
|
| +}
|
|
|