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