lkml.org 
[lkml]   [2001]   [Apr]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: X15 alpha release: as fast as TUX but in user space (fwd)
    On Sun, Apr 29, 2001 at 04:18:27PM -0400, Gregory Maxwell wrote:
    > having both the code and a comprehensive jump-table might become tough in a

    In the x86-64 implementation there's no jump table. The original design
    had a jump table but Peter raised the issue that indirect jumps are very
    costly and he suggested to jump to a fixed virtual address instead, I
    agreed with his suggestion. So this is what I implemented for x86-64
    with regard to the userspace vsyscall API (which will be used by glibc):

    enum vsyscall_num {
    __NR_vgettimeofday,
    __NR_vtime,
    };

    #define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr))

    the linker can prelink the vsyscall virtual address into the binary as a
    weak symbol and the dynamic linker will need to patch it only if
    somebody is overriding the weak symbol with a LD_PRELOAD.

    Virtual address space is relatively cheap. Currently the 64bit
    vgettimeofday bytecode + data is nearly 200 bytes, and the first two
    slots are large 512bytes each. So with 1024 bytes we do the whole thing,
    and we still have space for further 6 vsyscalls without paying any
    additional tlb entry.

    (the implementation of the above #define will change shortly but the
    VSYSCALL_ADDR() API for glibc will remain the same)

    Andrea
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 12:52    [W:0.051 / U:0.664 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site