mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
228 lines
6.2 KiB
C
Executable file
228 lines
6.2 KiB
C
Executable file
/* $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 */
|