15dbf2012SArnd Bergmann #ifndef _LINUX_TIME32_H 25dbf2012SArnd Bergmann #define _LINUX_TIME32_H 35dbf2012SArnd Bergmann /* 45dbf2012SArnd Bergmann * These are all interfaces based on the old time_t definition 55dbf2012SArnd Bergmann * that overflows in 2038 on 32-bit architectures. New code 65dbf2012SArnd Bergmann * should use the replacements based on time64_t and timespec64. 75dbf2012SArnd Bergmann * 85dbf2012SArnd Bergmann * Any interfaces in here that become unused as we migrate 95dbf2012SArnd Bergmann * code to time64_t should get removed. 105dbf2012SArnd Bergmann */ 115dbf2012SArnd Bergmann 125dbf2012SArnd Bergmann #include <linux/time64.h> 134d5f007eSArnd Bergmann #include <linux/timex.h> 145dbf2012SArnd Bergmann 15*9a416231SVincenzo Frascino #include <vdso/time32.h> 16*9a416231SVincenzo Frascino 172a785996SArnd Bergmann struct old_itimerspec32 { 185dbf2012SArnd Bergmann struct old_timespec32 it_interval; 199afc5eeeSArnd Bergmann struct old_timespec32 it_value; 209afc5eeeSArnd Bergmann }; 219afc5eeeSArnd Bergmann 229afc5eeeSArnd Bergmann struct old_utimbuf32 { 239afc5eeeSArnd Bergmann old_time32_t actime; 244faea239SArnd Bergmann old_time32_t modtime; 254faea239SArnd Bergmann }; 264faea239SArnd Bergmann 274faea239SArnd Bergmann struct old_timex32 { 284faea239SArnd Bergmann u32 modes; 294d5f007eSArnd Bergmann s32 offset; 304d5f007eSArnd Bergmann s32 freq; 314d5f007eSArnd Bergmann s32 maxerror; 324d5f007eSArnd Bergmann s32 esterror; 334d5f007eSArnd Bergmann s32 status; 344d5f007eSArnd Bergmann s32 constant; 354d5f007eSArnd Bergmann s32 precision; 364d5f007eSArnd Bergmann s32 tolerance; 374d5f007eSArnd Bergmann struct old_timeval32 time; 384d5f007eSArnd Bergmann s32 tick; 394d5f007eSArnd Bergmann s32 ppsfreq; 404d5f007eSArnd Bergmann s32 jitter; 414d5f007eSArnd Bergmann s32 shift; 424d5f007eSArnd Bergmann s32 stabil; 434d5f007eSArnd Bergmann s32 jitcnt; 444d5f007eSArnd Bergmann s32 calcnt; 454d5f007eSArnd Bergmann s32 errcnt; 464d5f007eSArnd Bergmann s32 stbcnt; 474d5f007eSArnd Bergmann s32 tai; 484d5f007eSArnd Bergmann 494d5f007eSArnd Bergmann s32:32; s32:32; s32:32; s32:32; 504d5f007eSArnd Bergmann s32:32; s32:32; s32:32; s32:32; 514d5f007eSArnd Bergmann s32:32; s32:32; s32:32; 524d5f007eSArnd Bergmann }; 534d5f007eSArnd Bergmann 544d5f007eSArnd Bergmann extern int get_old_timespec32(struct timespec64 *, const void __user *); 554d5f007eSArnd Bergmann extern int put_old_timespec32(const struct timespec64 *, void __user *); 569afc5eeeSArnd Bergmann extern int get_old_itimerspec32(struct itimerspec64 *its, 579afc5eeeSArnd Bergmann const struct old_itimerspec32 __user *uits); 589afc5eeeSArnd Bergmann extern int put_old_itimerspec32(const struct itimerspec64 *its, 599afc5eeeSArnd Bergmann struct old_itimerspec32 __user *uits); 609afc5eeeSArnd Bergmann struct __kernel_timex; 619afc5eeeSArnd Bergmann int get_old_timex32(struct __kernel_timex *, const struct old_timex32 __user *); 62ead25417SDeepa Dinamani int put_old_timex32(struct old_timex32 __user *, const struct __kernel_timex *); 63ead25417SDeepa Dinamani 64ead25417SDeepa Dinamani /** 659afc5eeeSArnd Bergmann * ns_to_kernel_old_timeval - Convert nanoseconds to timeval 66abc8f96eSArnd Bergmann * @nsec: the nanoseconds value to be converted 67abc8f96eSArnd Bergmann * 68abc8f96eSArnd Bergmann * Returns the timeval representation of the nsec parameter. 69abc8f96eSArnd Bergmann */ 70abc8f96eSArnd Bergmann extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec); 714f0fad9aSArnd Bergmann 72abc8f96eSArnd Bergmann #endif 73abc8f96eSArnd Bergmann