svn commit: trunk/uClibc/libc/sysdeps/linux/common
Peter S. Mazinger
ps.m at gmx.net
Tue Jun 6 09:00:03 UTC 2006
On Sun, 4 Jun 2006 vapier at uclibc.org wrote:
> Author: vapier
> Date: 2006-06-04 18:28:51 -0700 (Sun, 04 Jun 2006)
> New Revision: 15284
>
> Log:
> import sigqueueinfo() from glibc
>
> Added:
> trunk/uClibc/libc/sysdeps/linux/common/sigqueue.c
>
>
> Changeset:
> Added: trunk/uClibc/libc/sysdeps/linux/common/sigqueue.c
> ===================================================================
> --- trunk/uClibc/libc/sysdeps/linux/common/sigqueue.c 2006-06-04 18:40:48 UTC (rev 15283)
> +++ trunk/uClibc/libc/sysdeps/linux/common/sigqueue.c 2006-06-05 01:28:51 UTC (rev 15284)
> @@ -0,0 +1,52 @@
> +/* Copyright (C) 1997, 1998, 2000, 2003, 2005 Free Software Foundation, Inc.
> + This file is part of the GNU C Library.
> +
> + The GNU C Library is free software; you can redistribute it and/or
> + modify it under the terms of the GNU Lesser General Public
> + License as published by the Free Software Foundation; either
> + version 2.1 of the License, or (at your option) any later version.
> +
> + The GNU C Library is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + Lesser General Public License for more details.
> +
> + You should have received a copy of the GNU Lesser General Public
> + License along with the GNU C Library; if not, write to the Free
> + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
> + 02111-1307 USA. */
> +
> +#include <errno.h>
> +#include <signal.h>
> +#include <unistd.h>
> +#include <string.h>
> +
> +#include <sys/syscall.h>
> +
please add one for memset as well
libc_hidden_proto(memset)
> +libc_hidden_proto(getpid)
> +libc_hidden_proto(getuid)
> +
> +#ifdef __NR_rt_sigqueueinfo
> +
> +# define __NR___libc_rt_sigqueueinfo __NR_rt_sigqueueinfo
> +static inline _syscall3(int, __libc_rt_sigqueueinfo, pid_t, pid, int, sig, void*, value);
> +
either hide __sigqueue (extern __typeof(sigqueue) __sigqueue
attribute_hidden;) or rename to sigqueue removing the weak_alias
Thanks Peter
> +/* Return any pending signal or wait for one for the given time. */
> +int __sigqueue (pid_t pid, int sig, const union sigval val)
> +{
> + siginfo_t info;
> +
> + /* First, clear the siginfo_t structure, so that we don't pass our
> + stack content to other tasks. */
> + memset (&info, 0, sizeof (siginfo_t));
> + /* We must pass the information about the data in a siginfo_t value. */
> + info.si_signo = sig;
> + info.si_code = SI_QUEUE;
> + info.si_pid = getpid ();
> + info.si_uid = getuid ();
> + info.si_value = val;
> +
> + return __libc_rt_sigqueueinfo(pid, sig, __ptrvalue (&info));
> +}
> +weak_alias (__sigqueue, sigqueue)
> +#endif
>
> _______________________________________________
> uClibc-cvs mailing list
> uClibc-cvs at uclibc.org
> http://busybox.net/cgi-bin/mailman/listinfo/uclibc-cvs
>
>
--
Peter S. Mazinger <ps dot m at gmx dot net> ID: 0xA5F059F2
Key fingerprint = 92A4 31E1 56BC 3D5A 2D08 BB6E C389 975E A5F0 59F2
More information about the uClibc
mailing list