Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Jun 2012 01:43:01 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Peter Wemm <peter@wemm.org>
Cc:        Gianni <gianni@freebsd.org>, Alan Cox <alc@rice.edu>, Alexander Kabaev <kan@freebsd.org>, Attilio Rao <attilio@freebsd.org>, freebsd-arch@freebsd.org, Dag-Erling Sm?rgrav <des@des.no>
Subject:   Re: Fast vs slow syscalls (Re: Fwd: [RFC] Kernel shared variables)
Message-ID:  <20120607224301.GB85127@deviant.kiev.zoral.com.ua>
In-Reply-To: <CAGE5yCp0VUwcPh1_L2uU=wmCh96pkrrpuZWNMNw6RuMnYPyXQw@mail.gmail.com>
References:  <CACfq090r1tWhuDkxdSZ24fwafbVKU0yduu1yV2%2BoYo%2BwwT4ipA@mail.gmail.com> <201206051008.29568.jhb@freebsd.org> <86haupvk4a.fsf@ds4.des.no> <201206051222.12627.jhb@freebsd.org> <20120605171446.GA28387@onelab2.iet.unipi.it> <20120606040931.F1050@besplex.bde.org> <864nqovoek.fsf@ds4.des.no> <20120607064951.C1106@besplex.bde.org> <86sje7sf31.fsf@ds4.des.no> <CAGE5yCp0VUwcPh1_L2uU=wmCh96pkrrpuZWNMNw6RuMnYPyXQw@mail.gmail.com>

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

--ds9maZbwT7uk2FVi
Content-Type: text/plain; charset=koi8-r
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Jun 07, 2012 at 03:30:54PM -0700, Peter Wemm wrote:
> On Thu, Jun 7, 2012 at 1:26 AM, Dag-Erling Sm?rgrav <des@des.no> wrote:
> > Bruce Evans <brde@optusnet.com.au> writes:
> >> Now 2.44 nsec/call makes sense, but you really should add some volatil=
es
> >> here to ensure that getpid() is not optimized away.
> >
> > As you can see from the disassembly I provided, it isn't.
> >
> >> SO it loops OK, but we can't see what getpid() does. =9AIt must not be
> >> doing much.
> >
> > Umm, yes, that's the whole point of this conversation. =9ALinux's getpi=
d()
> > is not a syscall, but a library function that returns a constant from a
> > page shared by the kernel.
>=20
> It might be worth taking a peek at what they do before going too far
> down the rabbit hole.  They've had to deal with the whole ABI
> stability vs kernel layout thing already.
>=20
> As I recall, they literally embed a userland style .so shared object
> into the kernel and make it available to the user.  The dynamic linker
> "finds" it via elf auxinfo and inserts it into the symbol search
> order.
>=20
> That way, the shared page layout is kernel specific.  If they chose to
> provide getpid() or gettimeofday() or whatever, its a matter of
> adjusting the shared page and inserting code into the .so file.  If
> the page changes, the code changes.
>=20
> Think of what we do with signal trampolines except in a way
> ld-elf.so.1 can pull it into user space and gdb "sees" it as a .so
> file with debug info.
>=20
> I think I remember that they did the shared page thing and then
> switched to providing a stub .so file.

Yes, this is the thing called VDSO in the thread discussion.

--ds9maZbwT7uk2FVi
Content-Type: application/pgp-signature
Content-Disposition: inline

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

iEYEARECAAYFAk/RLnUACgkQC3+MBN1Mb4hULgCg6R/ekHO3tW9BYjjiMafdKXmR
gccAoLWFdYgh2qDFvMB7fGpWn1myusKE
=HShI
-----END PGP SIGNATURE-----

--ds9maZbwT7uk2FVi--



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