Re: [RFC][PATCH] linux-2.6.2-rc2_vsyscall-gtod_B1.patch

Eric W. Biederman
2004-01-31T00:17:11Z

Jamie Lokier <jamie@shareable.org> writes:

> Ulrich Drepper wrote:
> > ~ alternatively use the symbol table the vdso has. Export the new code
> > only via the symbol table. No fixed address for the function, the
> > runtime gets it from the symbol table. glibc will use weak symbol
> > references; if the symbol isn't there, the old code is used. This will
> > require that every single optimized syscall needs to be handled special.
> >
> >
> > I personally like the first approach better. The indirection table can
> > maintained in sync with the syscall table inside the kernel. It all
> > comes at all times from the same source. The overhead of the memory
> > load should be neglectable.
>
> I like the second approach more. You can change glibc to look up the
> weak symbol for _all_ syscalls, then none of them are special and it
> will work with future kernel optimisations.

There is one more piece to consider with either approach. The
calling conventions.

With the x86-64 optimized vsyscall the syscall number does
not need to be placed into a register, because you have used
the proper entry point. For any syscall worth tuning in
user space I suspect that level of optimization would be
beneficial. A fast call path that does not waste a register.

Eric