| 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 |  | 
|---|