ppc64 vDSO update
Benjamin Herrenschmidt
benh at kernel.crashing.org
Wed Nov 10 15:09:08 EST 2004
At the URL below, you can find a new version of the ppc64 vDSO patch against
a recent Linus bk tree. I intend to submit it upstream real soon as the work
on non-executable stack is waiting for it, though we must first make sure the
way symbols are exported to userland is ok for glibc.
http://gate.crashing.org/~benh/ppc64-vdso-20041110.diff
Following Roland comments, plus my own updates, I've done the following changes:
- Renamed _v_ and __v_* symbols to __kernel_* to match the x86 vDSO
- Added symbol versions (currently LINUX_2.6.10) and don't export a few things
that are really internal to the vDSO.
- Added a new export to userland: __kernel_sync_dicache (prototype below) that
does the dcache flush / icache invalidate necessary to turn data into executable,
I also added the dynamic symbol patching mecanism I wrote about earlier so that
the "__kernel_sync_dicache" symbol is automatically modified by the kernel to
point to the right version based on the CPU you are running on. At this point,
there are 2 implementations, a generic one and a POWER5 one. Ultimately, this
mecanism will be used for a lot more "alternatives" once we get more functions
in the vDSO, most notably locks.
In the long run, I plan to work on improving the kernel side implementation, for
example by avoiding some of the runtime symbol lookup done by the kernel at boot
and replace it with build-time generation, that sort of thing, along with getting
more functions exposed to glibc/userland.
For now, however, I'd like to settle with what we have here, so we can properly
"hook" glibc & ld.so on to __kernel_gettimeofday() and __kernel_sync_dicache().
Ben.
More information about the Linuxppc64-dev
mailing list