mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-03 04:50:23 +08:00
c119e0ab7a
* libc/include/sys/config.h[__i386__][__linux__]: Define _LARGE64FILE_SOURCE to 1. * libc/sys/linux/Makefile.am: Add getrlimit64.c and setrlimit64.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/resource.c: Add __getrlimit and __setrlimit aliases. * libc/sys/linux/sys/linux_time.h: Protect struct timeval definition. * libc/sys/linux/sys/resource.h: Include <bits/resource.h> instead of <linux/resource.h>. * libc/sys/linux/getrlimit64.c: New file. * libc/sys/linux/setrlimit64.c: Ditto.
77 lines
1.7 KiB
C
77 lines
1.7 KiB
C
#ifndef _LINUX_TIME_H
|
|
#define _LINUX_TIME_H
|
|
|
|
#include <asm/param.h>
|
|
#include <sys/types.h>
|
|
|
|
#ifndef _STRUCT_TIMESPEC
|
|
#define _STRUCT_TIMESPEC
|
|
struct timespec {
|
|
time_t tv_sec; /* seconds */
|
|
long tv_nsec; /* nanoseconds */
|
|
};
|
|
#endif /* _STRUCT_TIMESPEC */
|
|
|
|
/*
|
|
* Change timeval to jiffies, trying to avoid the
|
|
* most obvious overflows..
|
|
*
|
|
* And some not so obvious.
|
|
*
|
|
* Note that we don't want to return MAX_LONG, because
|
|
* for various timeout reasons we often end up having
|
|
* to wait "jiffies+1" in order to guarantee that we wait
|
|
* at _least_ "jiffies" - so "jiffies+1" had better still
|
|
* be positive.
|
|
*/
|
|
#define MAX_JIFFY_OFFSET ((~0UL >> 1)-1)
|
|
|
|
static __inline__ unsigned long
|
|
timespec_to_jiffies(struct timespec *value)
|
|
{
|
|
unsigned long sec = value->tv_sec;
|
|
long nsec = value->tv_nsec;
|
|
|
|
if (sec >= (MAX_JIFFY_OFFSET / HZ))
|
|
return MAX_JIFFY_OFFSET;
|
|
nsec += 1000000000L / HZ - 1;
|
|
nsec /= 1000000000L / HZ;
|
|
return HZ * sec + nsec;
|
|
}
|
|
|
|
static __inline__ void
|
|
jiffies_to_timespec(unsigned long jiffies, struct timespec *value)
|
|
{
|
|
value->tv_nsec = (jiffies % HZ) * (1000000000L / HZ);
|
|
value->tv_sec = jiffies / HZ;
|
|
}
|
|
|
|
#ifndef _STRUCT_TIMEVAL
|
|
#define _STRUCT_TIMEVAL
|
|
struct timeval {
|
|
time_t tv_sec; /* seconds */
|
|
suseconds_t tv_usec; /* microseconds */
|
|
};
|
|
#endif
|
|
|
|
struct timezone {
|
|
int tz_minuteswest; /* minutes west of Greenwich */
|
|
int tz_dsttime; /* type of dst correction */
|
|
};
|
|
|
|
#define ITIMER_REAL 0
|
|
#define ITIMER_VIRTUAL 1
|
|
#define ITIMER_PROF 2
|
|
|
|
struct itimerspec {
|
|
struct timespec it_interval; /* timer period */
|
|
struct timespec it_value; /* timer expiration */
|
|
};
|
|
|
|
struct itimerval {
|
|
struct timeval it_interval; /* timer interval */
|
|
struct timeval it_value; /* current value */
|
|
};
|
|
|
|
#endif
|