time.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:6k
- /* $Header$ */
- #ifndef _SYS_TIME_INCLUDED
- #define _SYS_TIME_INCLUDED
- /* time.h: Definitions for time handling functions */
- #ifdef _KERNEL_BUILD
- #include "../h/stdsyms.h"
- #else /* ! _KERNEL_BUILD */
- #include <sys/stdsyms.h>
- #endif /* _KERNEL_BUILD */
- #include <sys/types.h>
- /* ANSI C time constants, types, and structures */
- #ifdef _INCLUDE__STDC__
- # define CLOCKS_PER_SEC 1000000
- # ifndef NULL
- # define NULL 0
- # endif
- # ifndef _CLOCK_T
- # define _CLOCK_T
- typedef unsigned long clock_t;
- # endif /* _CLOCK_T */
- # ifndef _TIME_T
- # define _TIME_T
- typedef long time_t;
- # endif /* _TIME_T */
- # ifndef _SIZE_T
- # define _SIZE_T
- typedef unsigned int size_t;
- # endif /* _SIZE_T */
- /* Structure used with gmtime(), localtime(), mktime(), strftime(). */
- struct tm {
- int tm_sec; /* second (0-61, allows for leap seconds) */
- int tm_min; /* minute (0-59) */
- int tm_hour; /* hour (0-23) */
- int tm_mday; /* day of the month (1-31) */
- int tm_mon; /* month (0-11) */
- int tm_year; /* years since 1900 */
- int tm_wday; /* day of the week (0-6) */
- int tm_yday; /* day of the year (0-365) */
- int tm_isdst; /* non-0 if daylight savings time is in effect */
- };
- #endif /* _INCLUDE__STDC__ */
- /* Additional types needed for HP-UX */
- #ifdef _INCLUDE_HPUX_SOURCE
- # ifndef _STRUCT_TIMEVAL
- # define _STRUCT_TIMEVAL
- /* Structure returned by gettimeofday(2) system call and others */
- struct timeval {
- unsigned long tv_sec; /* seconds */
- long tv_usec; /* and microseconds */
- };
- # endif /* _STRUCT_TIMEVAL */
- /* Structure used to represent timezones for gettimeofday(2) and others */
- struct timezone {
- int tz_minuteswest; /* minutes west of Greenwich */
- int tz_dsttime; /* type of dst correction */
- };
- /* Structure defining a timer setting. */
- struct itimerval {
- struct timeval it_interval; /* timer interval */
- struct timeval it_value; /* current value */
- };
- #endif /* _INCLUDE_HPUX_SOURCE */
- /* Function prototypes and external variable declarations */
- #ifndef _KERNEL
- #ifdef __cplusplus
- extern "C" {
- #endif /* __cplusplus */
- #ifdef _INCLUDE__STDC__
- # ifdef _PROTOTYPES
- extern double difftime(time_t, time_t);
- extern time_t mktime(struct tm *);
- extern time_t time(time_t *);
- extern char *ctime(const time_t *);
- extern struct tm *gmtime(const time_t *);
- extern struct tm *localtime(const time_t *);
- extern size_t strftime(char *, size_t, const char *, const struct tm *);
- # else /* not _PROTOTYPES */
- extern double difftime();
- extern time_t mktime();
- extern time_t time();
- extern char *ctime();
- extern struct tm *gmtime();
- extern struct tm *localtime();
- extern size_t strftime();
- # endif /* not _PROTOTYPES */
- # ifdef _CLASSIC_ANSI_TYPES
- extern long clock();
- # else /* not _CLASSIC_ANSI_TYPES */
- # ifdef _PROTOTYPES
- extern clock_t clock(void);
- # else /* not _PROTOTYPES */
- extern clock_t clock();
- # endif /* not _PROTOTYPES */
- # endif /* not _CLASSIC_ANSI_TYPES */
- #endif /* _INCLUDE__STDC__ */
- #ifdef _INCLUDE_POSIX_SOURCE
- # ifdef _PROTOTYPES
- extern void tzset(void);
- # else /* not _PROTOTYPES */
- extern void tzset();
- # endif /* not _PROTOTYPES */
- extern char *tzname[2];
- #endif /* _INCLUDE_POSIX_SOURCE */
- #ifdef _INCLUDE_XOPEN_SOURCE
- # ifdef _PROTOTYPES
- extern char *strptime(const char *, const char *, struct tm *);
- # else /* not _PROTOTYPES */
- extern char *strptime();
- # endif /* not _PROTOTYPES */
- extern long timezone;
- extern int daylight;
- #endif /* _INCLUDE_XOPEN_SOURCE */
- #ifdef _INCLUDE_HPUX_SOURCE
- # ifdef _PROTOTYPES
- extern struct tm *getdate(const char *);
- extern char *nl_asctime(struct tm *, char *, int);
- extern char *nl_ctime(long *, char *, int);
- extern char *nl_ascxtime(struct tm *, char *);
- extern char *nl_cxtime(long *, char *);
- extern int getitimer(int, struct itimerval *);
- extern int setitimer(int, const struct itimerval *, struct itimerval *);
- extern int gettimeofday(struct timeval *, struct timezone *);
- extern int settimeofday(const struct timeval *, const struct timezone *);
- extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
- extern int stime(const time_t *);
- # else /* not _PROTOTYPES */
- extern struct tm *getdate();
- extern char *nl_asctime();
- extern char *nl_ctime();
- extern char *nl_ascxtime();
- extern char *nl_cxtime();
- extern int getitimer();
- extern int setitimer();
- extern int gettimeofday();
- extern int settimeofday();
- extern int select();
- extern int stime();
- # endif /* not _PROTOTYPES */
- extern int getdate_err;
- #endif /* _INCLUDE_HPUX_SOURCE */
- #ifdef __cplusplus
- }
- #endif /* __cplusplus */
- #endif /* not _KERNEL */
- /*
- * CLK_TCK is needed by the kernel, and also in the POSIX namespace.
- */
- #ifdef _INCLUDE_POSIX_SOURCE
- # ifndef CLK_TCK
- # ifdef __hp9000s300
- # define CLK_TCK 50
- # endif /* __hp9000s300 */
- # ifdef __hp9000s800
- # define CLK_TCK 100
- # endif /* __hp9000s800 */
- # endif /* CLK_TCK */
- #endif
- /* Additional HP-UX structures, macros, and constants */
- #ifdef _INCLUDE_HPUX_SOURCE
- /* Kernel instrumentation time value */
- struct ki_timeval {
- long tv_sec; /* seconds */
- long tv_nunit; /* and native units */
- };
- /* Kinds of daylight savings time */
- # define DST_NONE 0 /* not on dst */
- # define DST_USA 1 /* USA style dst */
- # define DST_AUST 2 /* Australian style dst */
- # define DST_WET 3 /* Western European dst */
- # define DST_MET 4 /* Middle European dst */
- # define DST_EET 5 /* Eastern European dst */
- /*
- * Operations on timevals.
- *
- * NB: timercmp does not work for >= or <=.
- */
- # define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
- # define timercmp(tvp, uvp, cmp)
- ((tvp)->tv_sec cmp (uvp)->tv_sec ||
- (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
- # define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
- /* Names of the interval timers */
- # define ITIMER_REAL 0
- # define ITIMER_VIRTUAL 1
- # define ITIMER_PROF 2
- #endif /* _INCLUDE_HPUX_SOURCE */
- #endif /* _SYS_TIME_INCLUDED */