source: trunk/libs/newlib/src/newlib/libc/sys/linux/sigqueue.c

Last change on this file was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 1.8 KB
Line 
1/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
2   This file is part of the GNU C Library.
3
4   The GNU C Library is free software; you can redistribute it and/or
5   modify it under the terms of the GNU Lesser General Public
6   License as published by the Free Software Foundation; either
7   version 2.1 of the License, or (at your option) any later version.
8
9   The GNU C Library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13
14   You should have received a copy of the GNU Lesser General Public
15   License along with the GNU C Library; if not, write to the Free
16   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17   02111-1307 USA.  */
18
19/* Modified for newlib by Jeff Johnston, May 30, 2002 */
20
21#include <errno.h>
22#include <signal.h>
23#include <unistd.h>
24#include <string.h>
25
26#include <machine/syscall.h>
27
28#define __NR___rt_sigqueueinfo __NR_rt_sigqueueinfo
29
30extern uid_t __getuid();
31extern pid_t __getpid();
32
33static _syscall3(int,__rt_sigqueueinfo,int,pid,int,sig,siginfo_t *,info)
34
35/* Return any pending signal or wait for one for the given time.  */
36int
37__sigqueue (pid, sig, val)
38     pid_t pid;
39     int sig;
40     const union sigval val;
41{
42  siginfo_t info;
43
44  /* First, clear the siginfo_t structure, so that we don't pass our
45     stack content to other tasks.  */
46  memset (&info, 0, sizeof (siginfo_t));
47  /* We must pass the information about the data in a siginfo_t value.  */
48  info.si_signo = sig;
49  info.si_code = SI_QUEUE;
50  info.si_pid = __getpid ();
51  info.si_uid = __getuid ();
52  info.si_value = val;
53
54  return __rt_sigqueueinfo(pid, sig, &info);
55}
56weak_alias (__sigqueue, sigqueue)
Note: See TracBrowser for help on using the repository browser.