Skip site navigation (1)Skip section navigation (2)
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>

next in thread | previous in thread | raw e-mail | index | archive | help

--ib0MfiC6BuP+wsSj
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, Jul 11, 2011 at 08:05:56PM +0200, Petr Salinger wrote:
> >>Should the bit slice be 7 or 8 bits ?
>=20
> >I propose to go 8 bits, and add the check to be future-proof.
>=20
> >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.
>=20
> No, the version in brandnote is compile-time minimal supported version,
> we will detect at runtime (by "sysctl kern.osreldate") which interface we=
=20
> should use.
>=20
>=20
> So far defined rfork() options:
>=20
> /*
>  * XXX currently, some operations without RFPROC set are not supported.
>  */
>=20
> #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=20
> group' */
> #define	RFPROC		(1<<4)	/* change child (else changes=20
> 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=20
> notification */
> #define	RFSTOPPED	(1<<17)	/* leave child in a stopped state */
> #define	RFHIGHPID	(1<<18)	/* use a pid higher than 10=20
> (idleproc) */
> #define	RFPPWAIT	(1<<31)	/* parent sleeps until child exits=20
> (vfork) */
> #define	RFKERNELONLY	(RFSTOPPED | RFHIGHPID | RFPPWAIT)
>=20
>=20
> The new interface will add:
>=20
> #define RFTSIGZMB	(1<<19)
> #define RFTSIGSHIFT     20    /* reserve bits 20-27 */=20
> #define RFTSIGMASK      0xFF=20
> #define RFTSIGNUM(flags)  (((flags) >> RFTSIGSHIFT) & RFTSIGMASK)
> #define RFTSIGFLAGS(signum) ((signum) << RFTSIGSHIFT)
>=20
> Seems this interface be acceptable ?

Looks good to me.

--ib0MfiC6BuP+wsSj
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (FreeBSD)

iEYEARECAAYFAk4bOsYACgkQC3+MBN1Mb4j6hgCfYSWLtnCtQ8i0t+q5ONU2S4iZ
Xu4AoOqUDzohAK7PbnZBEzYQkGHcHpx+
=LIfS
-----END PGP SIGNATURE-----

--ib0MfiC6BuP+wsSj--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110711180246.GA43872>