Date: Mon, 11 Jul 2011 21:02:46 +0300 From: Kostik Belousov <kostikbel@gmail.com> To: Petr Salinger <Petr.Salinger@seznam.cz> Cc: freebsd-hackers@freebsd.org, Robert Millan <rmh@debian.org>, current@freebsd.org Subject: Re: [PATCH] Improve LinuxThreads compatibility in rfork() Message-ID: <20110711180246.GA43872@deviant.kiev.zoral.com.ua> In-Reply-To: <alpine.LRH.2.02.1107111944550.7134@sci.felk.cvut.cz> References: <20110711133342.GT43872@deviant.kiev.zoral.com.ua> <alpine.LRH.2.02.1107111556000.7134@sci.felk.cvut.cz> <20110711142232.GU43872@deviant.kiev.zoral.com.ua> <alpine.LRH.2.02.1107111641340.7134@sci.felk.cvut.cz> <20110711150614.GV43872@deviant.kiev.zoral.com.ua> <alpine.LRH.2.02.1107111718440.7134@sci.felk.cvut.cz> <20110711154102.GW43872@deviant.kiev.zoral.com.ua> <alpine.LRH.2.02.1107111805350.7134@sci.felk.cvut.cz> <20110711172408.GX43872@deviant.kiev.zoral.com.ua> <alpine.LRH.2.02.1107111944550.7134@sci.felk.cvut.cz>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --] On Mon, Jul 11, 2011 at 08:05:56PM +0200, Petr Salinger wrote: > >>Should the bit slice be 7 or 8 bits ? > > >I propose to go 8 bits, and add the check to be future-proof. > > >It seems that we already parse GNU/kFreeBSD brandnote. I think this > >could be used to distinguish between old behaviour, that is currently > >used by your libc, and proposed new interface, if __FreeBSD_version > >is bumped and honored by glibc. You might need to store the brandinfo > >somewhere in struct proc or use the separate struct sysentvec. > > No, the version in brandnote is compile-time minimal supported version, > we will detect at runtime (by "sysctl kern.osreldate") which interface we > should use. > > > So far defined rfork() options: > > /* > * XXX currently, some operations without RFPROC set are not supported. > */ > > #define RFNAMEG (1<<0) /* UNIMPL new plan9 `name space' */ > #define RFENVG (1<<1) /* UNIMPL copy plan9 `env space' */ > #define RFFDG (1<<2) /* copy fd table */ > #define RFNOTEG (1<<3) /* UNIMPL create new plan9 `note > group' */ > #define RFPROC (1<<4) /* change child (else changes > curproc) */ > #define RFMEM (1<<5) /* share `address space' */ > #define RFNOWAIT (1<<6) /* give child to init */ > #define RFCNAMEG (1<<10) /* UNIMPL zero plan9 `name space' */ > #define RFCENVG (1<<11) /* UNIMPL zero plan9 `env space' */ > #define RFCFDG (1<<12) /* close all fds, zero fd table */ > #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 RFPPWAIT (1<<31) /* parent sleeps until child exits > (vfork) */ > #define RFKERNELONLY (RFSTOPPED | RFHIGHPID | RFPPWAIT) > > > The new interface will add: > > #define RFTSIGZMB (1<<19) > #define RFTSIGSHIFT 20 /* reserve bits 20-27 */ > #define RFTSIGMASK 0xFF > #define RFTSIGNUM(flags) (((flags) >> RFTSIGSHIFT) & RFTSIGMASK) > #define RFTSIGFLAGS(signum) ((signum) << RFTSIGSHIFT) > > Seems this interface be acceptable ? Looks good to me. [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (FreeBSD) iEYEARECAAYFAk4bOsYACgkQC3+MBN1Mb4j6hgCfYSWLtnCtQ8i0t+q5ONU2S4iZ Xu4AoOqUDzohAK7PbnZBEzYQkGHcHpx+ =LIfS -----END PGP SIGNATURE-----help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110711180246.GA43872>
