diff options
author | Rich Felker <dalias@aerifal.cx> | 2019-08-02 14:04:45 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2019-08-02 14:04:45 -0400 |
commit | 0705fe93566fca735bf0df155f71641df02fc273 (patch) | |
tree | 3ee3ba011e9f09ca9f7ca55a557a12f49b9ec5ce /src/thread/synccall.c | |
parent | 006a75a99789f383713e4f47affd7c90e39cc827 (diff) | |
download | musl-0705fe93566fca735bf0df155f71641df02fc273.tar.gz musl-0705fe93566fca735bf0df155f71641df02fc273.tar.bz2 musl-0705fe93566fca735bf0df155f71641df02fc273.tar.xz musl-0705fe93566fca735bf0df155f71641df02fc273.zip |
clock_gettime: add support for 32-bit vdso with 64-bit time_t
this fixes a major upcoming performance regression introduced by
commit 72f50245d018af0c31b38dec83c557a4e5dd1ea8, whereby 32-bit archs
would lose vdso clock_gettime after switching to 64-bit time_t, unless
the kernel supports time64 and provides a time64 version of the vdso
function. this would incur not just one but two syscalls: first, the
failed time64 syscall, then the fallback time32 one.
overflow of the 32-bit result is detected and triggers a revert to
syscalls. normally, on a system that's not Y2038-ready, this would
still overflow, but if the process has been migrated to a
time64-capable kernel or if the kernel has been hot-patched to add
time64 syscalls, it may conceivably work.
Diffstat (limited to 'src/thread/synccall.c')
0 files changed, 0 insertions, 0 deletions