[Lazarus] EpikTimer v1.0.1 released
Michael Schnell
mschnell at lumino.de
Mon Jun 23 15:23:16 CEST 2014
On 06/23/2014 02:51 PM, Sven Barth wrote:
>
> Because you'd need to link in that code then.
>
I don't see the what you mean by this.
vDSO is not really "linked". In an initialization phase, the static
address of such a function is detected and when you want to call it, you
just do an indirect call. (OK this is very similar to using an so ;-) .)
> Where should that code be then? The glibc? What about other
> c-libraries then or FPC's c-library-less approach? A library? Oh wait
> that needs kernel calls to load...
>
Of course glibc _could_ forward calls to it's traditional functions to
appropriate vDSO functions, but IMHO a real benefit of such vDSO
functions would be exactly with languages like fpc that do not (like to)
use the gnu provided libraries. Here, the RTL easily could do the call
to the vDSO function, instead of either implementing arch depending
stuff (like an optimized way of calling the Kernel via "int" or other
means) but simply do an indirect function call using a pointer
initialized in the program start phase - which should be easily doable
in any language.
I did a preliminary test for this in pure fpc code. Seems rather easy.
In fact, in the initialization phase you read a virtual file (in proc)
and hence you of course do an old-style system call. Hence, if you want
to do all system calls by an (assumed) vDSO function, before the
initialization is complete the code does need a fallback to a
traditional internal "int" based function.
-Michael
More information about the Lazarus
mailing list