X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/21362eb3e66fd2c787aee132bce100a44d71a99c..22ba694c5857e62b5a553b1505dcf2e509177f28:/bsd/sys/time.h diff --git a/bsd/sys/time.h b/bsd/sys/time.h index 42539d33a..fdf777617 100644 --- a/bsd/sys/time.h +++ b/bsd/sys/time.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -66,29 +66,33 @@ #include #include - -#ifndef _TIME_T -#define _TIME_T -typedef __darwin_time_t time_t; -#endif - -#ifndef _SUSECONDS_T -#define _SUSECONDS_T -typedef __darwin_suseconds_t suseconds_t; -#endif - +#ifdef KERNEL +#include /* user_time_t */ +#include /* uint64_t */ +#else /* !KERNEL */ +#include +#endif /* KERNEL */ /* - * Structure returned by gettimeofday(2) system call, - * and used in other calls. + * [XSI] The fd_set type shall be defined as described in . + * The timespec structure shall be defined as described in */ -#ifndef _TIMEVAL -#define _TIMEVAL -struct timeval { - time_t tv_sec; /* seconds */ - suseconds_t tv_usec; /* and microseconds */ -}; -#endif /* _TIMEVAL */ +#include +#include +#include +#ifdef KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#endif /* KERNEL */ + +#include +#include /* * Structure used as a parameter by getitimer(2) and setitimer(2) system @@ -107,103 +111,21 @@ struct itimerval { #define ITIMER_VIRTUAL 1 #define ITIMER_PROF 2 - -/* - * [XSI] The fd_set type shall be defined as described in . - * - * Note: We use _FD_SET to protect all select related - * types and macros - */ -#ifndef _FD_SET -#define _FD_SET - /* * Select uses bit masks of file descriptors in longs. These macros * manipulate such bit fields (the filesystem macros use chars). The * extra protection here is to permit application redefinition above * the default size. */ -#ifndef FD_SETSIZE -#define FD_SETSIZE 1024 -#endif - -#define __DARWIN_NBBY 8 /* bits in a byte */ -#define __DARWIN_NFDBITS (sizeof(__int32_t) * __DARWIN_NBBY) /* bits per mask */ -#define __DARWIN_howmany(x, y) (((x) + ((y) - 1)) / (y)) /* # y's == x bits? */ - -__BEGIN_DECLS -typedef struct fd_set { - __int32_t fds_bits[__DARWIN_howmany(FD_SETSIZE, __DARWIN_NFDBITS)]; -} fd_set; -__END_DECLS - -#define FD_SET(n, p) ((p)->fds_bits[(n)/__DARWIN_NFDBITS] |= (1<<((n) % __DARWIN_NFDBITS))) -#define FD_CLR(n, p) ((p)->fds_bits[(n)/__DARWIN_NFDBITS] &= ~(1<<((n) % __DARWIN_NFDBITS))) -#define FD_ISSET(n, p) ((p)->fds_bits[(n)/__DARWIN_NFDBITS] & (1<<((n) % __DARWIN_NFDBITS))) -#if __GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >= 3 -/* - * Use the built-in bzero function instead of the library version so that - * we do not pollute the namespace or introduce prototype warnings. - */ -#define FD_ZERO(p) __builtin_bzero(p, sizeof(*(p))) -#else -#define FD_ZERO(p) bzero(p, sizeof(*(p))) -#endif -#ifndef _POSIX_C_SOURCE -#define FD_COPY(f, t) bcopy(f, t, sizeof(*(f))) -#endif /* !_POSIX_C_SOURCE */ - -#endif /* !_FD_SET */ - - -#ifndef _POSIX_C_SOURCE -/* - * Structure defined by POSIX.4 to be like a timeval. - */ -#ifndef _TIMESPEC -#define _TIMESPEC -struct timespec { - time_t tv_sec; /* seconds */ - long tv_nsec; /* and nanoseconds */ -}; - -#ifdef KERNEL -// LP64todo - should this move? -#include /* user_time_t */ - -/* LP64 version of struct timeval. time_t is a long and must grow when - * we're dealing with a 64-bit process. - * WARNING - keep in sync with struct timeval - */ -#if __DARWIN_ALIGN_NATURAL -#pragma options align=natural -#endif +#include +#include +#include +#include +#include -struct user_timeval { - user_time_t tv_sec; /* seconds */ - suseconds_t tv_usec; /* and microseconds */ -}; +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) -struct user_itimerval { - struct user_timeval it_interval; /* timer interval */ - struct user_timeval it_value; /* current value */ -}; - -/* LP64 version of struct timespec. time_t is a long and must grow when - * we're dealing with a 64-bit process. - * WARNING - keep in sync with struct timespec - */ -struct user_timespec { - user_time_t tv_sec; /* seconds */ - int32_t tv_nsec; /* and nanoseconds */ -}; - -#if __DARWIN_ALIGN_NATURAL -#pragma options align=reset -#endif - -#endif // KERNEL -#endif +#include #define TIMEVAL_TO_TIMESPEC(tv, ts) { \ (ts)->tv_sec = (tv)->tv_sec; \ @@ -264,14 +186,14 @@ struct clockinfo { int stathz; /* statistics clock frequency */ int profhz; /* profiling clock frequency */ }; -#endif /* ! _POSIX_C_SOURCE */ - +#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ #ifdef KERNEL -#ifndef _POSIX_C_SOURCE +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) __BEGIN_DECLS void microtime(struct timeval *tv); +void microtime_with_abstime(struct timeval *tv, uint64_t *abstime); void microuptime(struct timeval *tv); #define getmicrotime(a) microtime(a) #define getmicrouptime(a) microuptime(a) @@ -285,30 +207,34 @@ void timevalfix(struct timeval *t1); #ifdef BSD_KERNEL_PRIVATE time_t boottime_sec(void); void inittodr(time_t base); -int itimerfix(struct timeval *tv); -int itimerdecr(struct itimerval *itp, int usec); +int ratecheck(struct timeval *lasttime, const struct timeval *mininterval); +int ppsratecheck(struct timeval *lasttime, int *curpps, int maxpps); #endif /* BSD_KERNEL_PRIVATE */ __END_DECLS -#endif /* ! _POSIX_C_SOURCE */ +#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ #else /* !KERNEL */ -__BEGIN_DECLS - -#ifndef _POSIX_C_SOURCE +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) #include +#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ + +__BEGIN_DECLS +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) int adjtime(const struct timeval *, struct timeval *); int futimes(int, const struct timeval *); +int lutimes(const char *, const struct timeval *) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); int settimeofday(const struct timeval *, const struct timezone *); -#endif /* ! _POSIX_C_SOURCE */ +#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ int getitimer(int, struct itimerval *); -int gettimeofday(struct timeval * __restrict, struct timezone * __restrict); -int select(int, fd_set * __restrict, fd_set * __restrict, - fd_set * __restrict, struct timeval * __restrict); +int gettimeofday(struct timeval * __restrict, void * __restrict); + +#include /* select() prototype */ + int setitimer(int, const struct itimerval * __restrict, struct itimerval * __restrict); int utimes(const char *, const struct timeval *);