Re: [patch] fastcall-2.3.32-B6, SYSENTER/SYSEXIT support

Richard Guenther (zxmpm11@student.uni-tuebingen.de)
Thu, 16 Dec 1999 12:08:49 +0100 (MET)


On Wed, 15 Dec 1999, Richard Gooch wrote:

> Richard Guenther writes:
> > Richard Gooch writes:
> > > I propose a much simpler abstraction: set up a global page (which
> > > always appears at a fixed address in user-space), and set up a jump
> > > table. Have one jump vector per system call. That's the ABI. End of
> > > story.
> >
> > While I like the idea in general, a more generic solution would to
> > tell the dynamic linker about this page and have a global symbol
> > like __linux_ia32_entry and have it fixup the syscall entry addresses
> > at runtime. This way you could override the magic symbol with
> > LD_PRELOAD and implement strace and friends via a intermediate
> > jump table.
> >
> > You could switch from a jump-table to a destination-address-table
> > and have either indirect calls or let the dynamic linker fixup
> > direct calls by reading addresses (of course they have to have fixed
> > values after boot then...) from the global page - no indirect or
> > double jump penalty.
>
> This doesn't affect the kernel. The kernel just provides the jump
> table in a known location. User-space can decide what to do with that.
> You can have your __linux_ia32_entry symbol or not, as you like.

It does affect the kernel, because if you want to do neat tricks
you have to ensure that the contents of the page (the contents of
the jump-table) is constant during runtime of any program - If this
is the case, of course, rest is completely user-space.

Richard.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/