]> git.ipfire.org Git - thirdparty/glibc.git/commit
linux: Add helper function to optimize 64-bit time_t fallback support
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 20 Aug 2020 12:18:15 +0000 (09:18 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 24 Aug 2020 17:27:15 +0000 (14:27 -0300)
commit02c91eb6115872219a85bb93724affd7fcdedf7a
tree70eba2b827fa99ebca9202b9915894694e2a03af
parent756c306502498f999fdd494477b9cea1b45e4faf
linux: Add helper function to optimize 64-bit time_t fallback support

These helper functions are used to optimize the 64-bit time_t support on
configurations that requires support for 32-bit time_t fallback
(!__ASSUME_TIME64_SYSCALLS).  The idea is once the kernel advertises that
it does not have 64-bit time_t support, glibc will stop to try issue the
64-bit time_t syscall altogether.

For instance:

  #ifndef __NR_symbol_time64
  # define __NR_symbol_time64 __NR_symbol
  #endif
  int r;
  if (supports_time64 ())
    {
      r = INLINE_SYSCALL_CALL (symbol, ...);
      if (r == 0 || errno != ENOSYS)
        return r;

      mark_time64_unsupported ();
    }
  #ifndef __ASSUME_TIME64_SYSCALLS
  <32-bit fallback syscall>
  #endif
  return r;

On configuration with default 64-bit time_t this optimization should be
optimized away by the compiler resulting in no overhead.
sysdeps/unix/sysv/linux/Makefile
sysdeps/unix/sysv/linux/time64-support.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/time64-support.h [new file with mode: 0644]