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: pgpkvJOSCcDmP.pgp
Description: PGP signature

Reply via email to