1 #ifndef _STRUCT_TIMESPEC64_H 2 #define _STRUCT_TIMESPEC64_H 3 4 #if __TIMESIZE == 64 5 # define __timespec64 timespec 6 #else 7 #include <endian.h> 8 /* The glibc Y2038-proof struct __timespec64 structure for a time value. 9 To keep things Posix-ish, we keep the nanoseconds field a 32-bit 10 signed long, but since the Linux field is a 64-bit signed int, we 11 pad our tv_nsec with a 32-bit unnamed bit-field padding. 12 13 As a general rule the Linux kernel is ignoring upper 32 bits of 14 tv_nsec field. */ 15 struct __timespec64 16 { 17 __time64_t tv_sec; /* Seconds */ 18 # if BYTE_ORDER == BIG_ENDIAN 19 __int32_t :32; /* Padding */ 20 __int32_t tv_nsec; /* Nanoseconds */ 21 # else 22 __int32_t tv_nsec; /* Nanoseconds */ 23 __int32_t :32; /* Padding */ 24 # endif 25 }; 26 #endif 27 #endif /* _STRUCT_TIMESPEC64_H */ 28