Messages in this thread | | | Date | Thu, 16 Dec 1999 08:51:28 -0700 | From | Richard Gooch <> | Subject | Re: [patch] fastcall-2.3.32-B6, SYSENTER/SYSEXIT support |
| |
Richard Guenther writes: > 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.
Maybe we're talking past each other? The kernel-provided jump table would be constant multiple versions of the kernel, let alone across reboots or during the lifetime of a single programme. The jump table would only change if a new syscall was added, in which case the would be a new entry appended to the jump table.
Regards,
Richard.... Permanent: rgooch@atnf.csiro.au Current: rgooch@ras.ucalgary.ca
- 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/
| |