[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r4800 - in glibc-package/trunk/debian: . patches/kfreebsd



Author: aurel32
Date: 2011-07-19 11:17:16 +0000 (Tue, 19 Jul 2011)
New Revision: 4800

Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/kfreebsd/local-sysdeps.diff
Log:
  * kfreebsd/local-sysdeps.diff, update to revision 3616 (from glibc-bsd),
    fixing LD_PRELOAD with a kfreebsd-9 kernel (closes: #630695) and 
    tst-atime when build in a noatime filesystem (closes: #634152).



Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2011-07-19 10:57:43 UTC (rev 4799)
+++ glibc-package/trunk/debian/changelog	2011-07-19 11:17:16 UTC (rev 4800)
@@ -6,6 +6,9 @@
     results.  Closes: #632863.
   * Add patches/localedata/locale-os_RU.diff from upstream to add Ossetian
     locale.  Closes: #634508.
+  * kfreebsd/local-sysdeps.diff, update to revision 3616 (from glibc-bsd),
+    fixing LD_PRELOAD with a kfreebsd-9 kernel (closes: #630695) and 
+    tst-atime when build in a noatime filesystem (closes: #634152).
 
  -- Aurelien Jarno <aurel32@debian.org>  Sun, 10 Jul 2011 22:01:11 +0200
 

Modified: glibc-package/trunk/debian/patches/kfreebsd/local-sysdeps.diff
===================================================================
--- glibc-package/trunk/debian/patches/kfreebsd/local-sysdeps.diff	2011-07-19 10:57:43 UTC (rev 4799)
+++ glibc-package/trunk/debian/patches/kfreebsd/local-sysdeps.diff	2011-07-19 11:17:16 UTC (rev 4800)
@@ -3181,6 +3181,46 @@
 +#define _DIRENT_HAVE_D_NAMLEN 1
 +#define _DIRENT_HAVE_D_TYPE 1
 --- /dev/null
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/elf.h
+@@ -0,0 +1,37 @@
++/* This file defines standard ELF types, structures, and macros.
++   Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010
++	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.  */
++
++#ifndef _BITS_ELF_H
++#define _BITS_ELF_H
++
++__BEGIN_DECLS
++
++#define	AT_EXECPATH	15	/* Path to the executable. */
++#define	AT_CANARY	16	/* Canary for SSP. */
++#define	AT_CANARYLEN	17	/* Length of the canary. */
++#define	AT_OSRELDATE	18	/* OSRELDATE. */
++#define	AT_NCPUS	19	/* Number of CPUs. */
++#define	AT_PAGESIZES	20	/* Pagesizes. */
++#define	AT_PAGESIZESLEN	21	/* Number of pagesizes. */
++#define	AT_STACKPROT	23	/* Initial stack protection. */
++
++__END_DECLS
++
++#endif	/* elf.h */
+--- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/errno.h
 @@ -0,0 +1,183 @@
 +/*-
@@ -6268,7 +6308,7 @@
 +#endif /* _BITS_STATFS_H */
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/statvfs.h
-@@ -0,0 +1,95 @@
+@@ -0,0 +1,97 @@
 +/* Definition of `struct statvfs', information about a filesystem.
 +   Copyright (C) 1998, 2000-2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -6360,8 +6400,10 @@
 +# define ST_NODEV	ST_NODEV
 +  ST_NOEXEC = 8,		/* Disallow program execution.  */
 +# define ST_NOEXEC	ST_NOEXEC
-+  ST_SYNCHRONOUS = 16		/* Writes are synced at once.  */
++  ST_SYNCHRONOUS = 16,		/* Writes are synced at once.  */
 +# define ST_SYNCHRONOUS	ST_SYNCHRONOUS
++  ST_NOATIME = 1024,		/* Do not update access times.  */
++# define ST_NOATIME	ST_NOATIME
 +#endif	/* Use GNU.  */
 +};
 --- /dev/null
@@ -7345,7 +7387,7 @@
 +#include <sysdeps/unix/clock_settime.c>
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/clone.c
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,144 @@
 +/* Create a thread.
 +   Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -7374,6 +7416,29 @@
 +#include <stddef.h>
 +#undef __clone
 +
++
++#include <sys/sysctl.h>
++
++static inline int
++__kernel_osreldate(void)
++{
++    static int osreldate;
++
++    int mib[2];
++    size_t size;
++    char *temp;
++
++    if (osreldate == 0)
++    {
++	mib[0] = CTL_KERN;
++	mib[1] = KERN_OSRELDATE;
++	size = sizeof osreldate;
++	if (__sysctl(mib, 2, &osreldate, &size, NULL, 0) == -1)
++		return (-1);
++    }		
++    return (osreldate);
++}
++
 +/* __start_thread (flags, child_stack, fn, arg)
 +   is roughly equivalent to
 +
@@ -7411,7 +7476,20 @@
 +    }
 +
 +  if ((flags & CSIGNAL) != SIGCHLD)
++  {
++    if (__kernel_osreldate() >= 802509)    /* XXX have to be updated after upstream merge */
++                /* we slightly cheat here, */
++                /* the 9.x snapshot prior to r223966 does not support it too */
 +    {
++      if ((flags & CSIGNAL) & ~RFTSIGMASK)
++	{
++	  __set_errno (EINVAL);
++	  return -1;
++	}
++        rfork_flags |= (RFTSIGZMB | RFTSIGFLAGS(flags & CSIGNAL));
++    }
++    else
++    {
 +      if ((flags & CSIGNAL) & ~RFTHPNMASK)
 +	{
 +	  __set_errno (EINVAL);
@@ -7422,7 +7500,7 @@
 +      else
 +        rfork_flags |= (RFLINUXTHPN | ((flags & CSIGNAL) <<  RFTHPNSHIFT));
 +    }
-+
++  } 
 +  if (flags & CLONE_VM)
 +    rfork_flags |= RFMEM;
 +
@@ -8523,10 +8601,58 @@
 +}
 +
 --- /dev/null
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-support.c
+@@ -0,0 +1,44 @@
++/* Dynamic linker system dependencies for GNU/kFreeBSD.
++   Copyright (C) 2011 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.  */
++
++#define _dl_aux_init _dl_aux_init_ignored_code
++#include <elf/dl-support.c>
++#include <bits/elf.h>
++#undef _dl_aux_init
++
++#ifdef HAVE_AUX_VECTOR
++void
++internal_function
++_dl_aux_init (ElfW(auxv_t) *av)
++{
++  for (; av->a_type != AT_NULL; ++av)
++    switch (av->a_type)
++      {
++      case AT_PAGESZ:
++	GLRO(dl_pagesize) = av->a_un.a_val;
++	break;
++      case AT_PHDR:
++	GL(dl_phdr) = (void *) av->a_un.a_val;
++	break;
++      case AT_PHNUM:
++	GL(dl_phnum) = av->a_un.a_val;
++	break;
++      }
++}
++#endif
+--- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-sysdep.c
-@@ -0,0 +1,56 @@
+@@ -0,0 +1,248 @@
 +/* Dynamic linker system dependencies for GNU/kFreeBSD.
-+   Copyright (C) 2008 Free Software Foundation, Inc.
++   Copyright (C) 1995-1998,2000-2008,2009,2010,2011
++        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
@@ -8555,9 +8681,200 @@
 +#include <kernel-features.h>
 +
 +#ifdef SHARED
++# define _dl_sysdep_start _dl_sysdep_start_ignored_code
++# define _dl_show_auxv _dl_show_auxv_ignored_code
 +# include <elf/dl-sysdep.c>
++# include <bits/elf.h>
++# undef _dl_sysdep_start
++# undef _dl_show_auxv
++
++ElfW(Addr)
++_dl_sysdep_start (void **start_argptr,
++		  void (*dl_main) (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
++				   ElfW(Addr) *user_entry, ElfW(auxv_t) *auxv))
++{
++  const ElfW(Phdr) *phdr = NULL;
++  ElfW(Word) phnum = 0;
++  ElfW(Addr) user_entry;
++  ElfW(auxv_t) *av;
++  uid_t uid = 0;
++  gid_t gid = 0;
++#ifdef NEED_DL_SYSINFO
++  uintptr_t new_sysinfo = 0;
 +#endif
 +
++  __libc_stack_end = DL_STACK_END (start_argptr);
++  DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, INTUSE(_dl_argv), _environ,
++			  _dl_auxv);
++
++  user_entry = (ElfW(Addr)) ENTRY_POINT;
++  GLRO(dl_platform) = NULL; /* Default to nothing known about the platform.  */
++
++  for (av = _dl_auxv; av->a_type != AT_NULL; av++)
++    switch (av->a_type)
++      {
++      case AT_PHDR:
++	phdr = (void *) av->a_un.a_val;
++	break;
++      case AT_PHNUM:
++	phnum = av->a_un.a_val;
++	break;
++      case AT_PAGESZ:
++	GLRO(dl_pagesize) = av->a_un.a_val;
++	break;
++      case AT_ENTRY:
++	user_entry = av->a_un.a_val;
++	break;
++#ifdef NEED_DL_BASE_ADDR
++      case AT_BASE:
++	_dl_base_addr = av->a_un.a_val;
++	break;
++#endif
++      }
++
++    {
++      /* Fill in the values we have not gotten from the kernel through the
++	 auxiliary vector.  */
++#  undef SEE
++#  define SEE(UID, var, uid) \
++   var ^= __get##uid ()
++      SEE (UID, uid, uid);
++      SEE (EUID, uid, euid);
++      SEE (GID, gid, gid);
++      SEE (EGID, gid, egid);
++
++      /* If one of the two pairs of IDs does not match this is a setuid
++	 or setgid run.  */
++      INTUSE(__libc_enable_secure) = uid | gid;
++    }
++
++#ifndef HAVE_AUX_PAGESIZE
++  if (GLRO(dl_pagesize) == 0)
++    GLRO(dl_pagesize) = __getpagesize ();
++#endif
++
++#if defined NEED_DL_SYSINFO
++  /* Only set the sysinfo value if we also have the vsyscall DSO.  */
++  if (GLRO(dl_sysinfo_dso) != 0 && new_sysinfo)
++    GLRO(dl_sysinfo) = new_sysinfo;
++#endif
++
++#ifdef DL_SYSDEP_INIT
++  DL_SYSDEP_INIT;
++#endif
++
++#ifdef DL_PLATFORM_INIT
++  DL_PLATFORM_INIT;
++#endif
++
++  /* Determine the length of the platform name.  */
++  if (GLRO(dl_platform) != NULL)
++    GLRO(dl_platformlen) = strlen (GLRO(dl_platform));
++
++  if (__sbrk (0) == _end)
++    /* The dynamic linker was run as a program, and so the initial break
++       starts just after our bss, at &_end.  The malloc in dl-minimal.c
++       will consume the rest of this page, so tell the kernel to move the
++       break up that far.  When the user program examines its break, it
++       will see this new value and not clobber our data.  */
++    __sbrk (GLRO(dl_pagesize)
++	    - ((_end - (char *) 0) & (GLRO(dl_pagesize) - 1)));
++
++  /* If this is a SUID program we make sure that FDs 0, 1, and 2 are
++     allocated.  If necessary we are doing it ourself.  If it is not
++     possible we stop the program.  */
++  if (__builtin_expect (INTUSE(__libc_enable_secure), 0))
++    __libc_check_standard_fds ();
++
++  (*dl_main) (phdr, phnum, &user_entry, _dl_auxv);
++  return user_entry;
++}
++
++void
++internal_function
++_dl_show_auxv (void)
++{
++  char buf[64];
++  ElfW(auxv_t) *av;
++
++  /* Terminate string.  */
++  buf[63] = '\0';
++
++  /* The following code assumes that the AT_* values are encoded
++     starting from 0 with AT_NULL, 1 for AT_IGNORE, and all other values
++     close by (otherwise the array will be too large).  In case we have
++     to support a platform where these requirements are not fulfilled
++     some alternative implementation has to be used.  */
++  for (av = _dl_auxv; av->a_type != AT_NULL; ++av)
++    {
++      static const struct
++      {
++	const char label[17];
++	enum { unknown = 0, dec, hex, str, ignore } form : 8;
++      } auxvars[] =
++	{
++	  [AT_EXECFD - 2] =		{ "EXECFD:       ", dec },
++	  [AT_PHDR - 2] =		{ "PHDR:         0x", hex },
++	  [AT_PHENT - 2] =		{ "PHENT:        ", dec },
++	  [AT_PHNUM - 2] =		{ "PHNUM:        ", dec },
++	  [AT_PAGESZ - 2] =		{ "PAGESZ:       ", dec },
++	  [AT_BASE - 2] =		{ "BASE:         0x", hex },
++	  [AT_FLAGS - 2] =		{ "FLAGS:        0x", hex },
++	  [AT_ENTRY - 2] =		{ "ENTRY:        0x", hex },
++#ifndef __powerpc__
++	  /* For some odd reason these are not in sys/powerpc/include/elf.h.  */
++	  [AT_NOTELF - 2] =		{ "NOTELF:       ", hex },
++	  [AT_UID - 2] =		{ "UID:          ", dec },
++	  [AT_EUID - 2] =		{ "EUID:         ", dec },
++	  [AT_GID - 2] =		{ "GID:          ", dec },
++	  [AT_EGID - 2] =		{ "EGID:         ", dec },
++#endif
++	  [AT_EXECPATH - 2] =		{ "EXECPATH      ", str },
++	  [AT_CANARY - 2] =		{ "CANARY:       0x", hex },
++	  [AT_CANARYLEN - 2] =		{ "CANARYLEN:    ", dec },
++	  [AT_OSRELDATE - 2] =		{ "OSRELDATE:    ", dec },
++	  [AT_NCPUS - 2] =		{ "NCPUS:        ", dec },
++	  [AT_PAGESIZES - 2] =		{ "PAGESIZES:    0x", hex },
++	  [AT_PAGESIZESLEN - 2] =	{ "PAGESIZESLEN: ", dec },
++	  [AT_STACKPROT - 2] =		{ "STACKPROT:    0x", hex },
++	};
++      unsigned int idx = (unsigned int) (av->a_type - 2);
++
++      if ((unsigned int) av->a_type < 2u || auxvars[idx].form == ignore)
++	continue;
++
++      assert (AT_NULL == 0);
++      assert (AT_IGNORE == 1);
++
++      if (idx < sizeof (auxvars) / sizeof (auxvars[0])
++	  && auxvars[idx].form != unknown)
++	{
++	  const char *val = (char *) av->a_un.a_val;
++
++	  if (__builtin_expect (auxvars[idx].form, dec) == dec)
++	    val = _itoa ((unsigned long int) av->a_un.a_val,
++			 buf + sizeof buf - 1, 10, 0);
++	  else if (__builtin_expect (auxvars[idx].form, hex) == hex)
++	    val = _itoa ((unsigned long int) av->a_un.a_val,
++			 buf + sizeof buf - 1, 16, 0);
++
++	  _dl_printf ("AT_%s%s\n", auxvars[idx].label, val);
++
++	  continue;
++	}
++
++      /* Unknown value: print a generic line.  */
++      char buf2[17];
++      buf2[sizeof (buf2) - 1] = '\0';
++      const char *val2 = _itoa ((unsigned long int) av->a_un.a_val,
++				buf2 + sizeof buf2 - 1, 16, 0);
++      const char *val =  _itoa ((unsigned long int) av->a_type,
++				buf + sizeof buf - 1, 16, 0);
++      _dl_printf ("AT_??? (0x%s): 0x%s\n", val, val2);
++    }
++}
++#endif
++
 +int
 +attribute_hidden
 +_dl_discover_osversion (void)
@@ -11091,7 +11408,7 @@
 +}
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getosreldate.c
-@@ -0,0 +1,54 @@
+@@ -0,0 +1,58 @@
 +/*
 + * Copyright (c) 1989, 1993
 + *	The Regents of the University of California.  All rights reserved.
@@ -11128,22 +11445,26 @@
 +int
 +__getosreldate(void)
 +{
-+	int mib[2];
-+	size_t size;
-+	int value;
-+	char *temp;
++    static int osreldate;
 +
++    int mib[2];
++    size_t size;
++    char *temp;
++
++    if (osreldate == 0)
++    {
 +	if ((temp = getenv("OSVERSION"))) {
-+		value = atoi(temp);
-+		return (value);
++		osreldate = atoi(temp);
++		return (osreldate);
 +	}
 +
 +	mib[0] = CTL_KERN;
 +	mib[1] = KERN_OSRELDATE;
-+	size = sizeof value;
-+	if (sysctl(mib, 2, &value, &size, NULL, 0) == -1)
++	size = sizeof osreldate;
++	if (__sysctl(mib, 2, &osreldate, &size, NULL, 0) == -1)
 +		return (-1);
-+	return (value);
++    }		
++    return (osreldate);
 +}
 +weak_alias (__getosreldate, getosreldate)
 --- /dev/null
@@ -20179,6 +20500,48 @@
 +
 +#endif /* !_PATHS_H_ */
 --- /dev/null
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/powerpc/bits/elf.h
+@@ -0,0 +1,39 @@
++/* This file defines standard ELF types, structures, and macros.
++   Copyright (C) 2011 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.  */
++
++#ifndef _BITS_ELF_H
++#define _BITS_ELF_H
++
++__BEGIN_DECLS
++
++#define	AT_DCACHEBSIZE	10	/* Data cache block size for the processor. */
++#define	AT_ICACHEBSIZE	11	/* Instruction cache block size for the uP. */
++#define	AT_UCACHEBSIZE	12	/* Cache block size, or `0' if cache not unified. */
++#define	AT_EXECPATH	13	/* Path to the executable. */
++#define	AT_CANARY	14	/* Canary for SSP */
++#define	AT_CANARYLEN	15	/* Length of the canary. */
++#define	AT_OSRELDATE	16	/* OSRELDATE. */
++#define	AT_NCPUS	17	/* Number of CPUs. */
++#define	AT_PAGESIZES	18	/* Pagesizes. */
++#define	AT_PAGESIZESLEN	19	/* Number of pagesizes. */
++#define	AT_STACKPROT	21	/* Initial stack protection. */
++
++__END_DECLS
++
++#endif	/* elf.h */
+--- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/pread.c
 @@ -0,0 +1,69 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
@@ -22353,7 +22716,7 @@
 +}
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/statfsconv.c
-@@ -0,0 +1,203 @@
+@@ -0,0 +1,205 @@
 +/* Convert between different 'struct statfs' and 'struct statvfs' formats.
 +   Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -22520,7 +22883,8 @@
 +    | (pk->f_flags & MNT_NOSUID ? ST_NOSUID : 0)
 +    | (pk->f_flags & MNT_NODEV ? ST_NODEV : 0)
 +    | (pk->f_flags & MNT_NOEXEC ? ST_NOEXEC : 0)
-+    | (pk->f_flags & MNT_SYNCHRONOUS ? ST_SYNCHRONOUS : 0);
++    | (pk->f_flags & MNT_SYNCHRONOUS ? ST_SYNCHRONOUS : 0)
++    | (pk->f_flags & MNT_NOATIME ? ST_NOATIME : 0);
 +  p32->f_namemax	= pk->f_namemax;
 +
 +  memset (p32->f_spare, '\0', sizeof (p32->f_spare));
@@ -22552,7 +22916,8 @@
 +    | (pk->f_flags & MNT_NOSUID ? ST_NOSUID : 0)
 +    | (pk->f_flags & MNT_NODEV ? ST_NODEV : 0)
 +    | (pk->f_flags & MNT_NOEXEC ? ST_NOEXEC : 0)
-+    | (pk->f_flags & MNT_SYNCHRONOUS ? ST_SYNCHRONOUS : 0);
++    | (pk->f_flags & MNT_SYNCHRONOUS ? ST_SYNCHRONOUS : 0)
++    | (pk->f_flags & MNT_NOATIME ? ST_NOATIME : 0);
 +  p64->f_namemax	= pk->f_namemax;
 +
 +  memset (p64->f_spare, '\0', sizeof (p64->f_spare));
@@ -23689,7 +24054,7 @@
 +#endif
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/rfork.h
-@@ -0,0 +1,91 @@
+@@ -0,0 +1,98 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +
@@ -23763,6 +24128,13 @@
 +#define RFTHREAD	(1<<13)	/* enable kernel thread support */
 +#define RFSIGSHARE	(1<<14)	/* share signal handlers */
 +#define RFLINUXTHPN     (1<<16) /* do linux clone exit parent notification */
++#define	RFSTOPPED	(1<<17) /* leave child in a stopped state */
++#define	RFHIGHPID	(1<<18) /* use a pid higher than 10 (idleproc) */
++#define	RFTSIGZMB	(1<<19) /* select signal for exit parent notification */
++#define	RFTSIGSHIFT	20      /* selected signal number is in bits 20-27  */
++#define	RFTSIGMASK	0xFF
++#define	RFTSIGNUM(flags)	(((flags) >> RFTSIGSHIFT) & RFTSIGMASK)
++#define	RFTSIGFLAGS(signum)	((signum) << RFTSIGSHIFT)
 +#define RFPPWAIT	(1<<31) /* parent sleeps until child exits (vfork) */
 +
 +#define RFTHPNSHIFT	24	/* reserve bits 24-30 */


Reply to: