ppc64 vDSO update
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.
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().
More information about the Linuxppc64-dev