* Copyright 2005-2011, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _TIME_H_
#define _TIME_H_
#include <locale_t.h>
#include <sys/types.h>
struct sigevent;
typedef __haiku_int32 clock_t;
typedef __haiku_int32 suseconds_t;
typedef __haiku_uint32 useconds_t;
#if defined(__i386__) && !defined(__x86_64__)
typedef __haiku_int32 time_t;
#else
typedef __haiku_int64 time_t;
#endif
#define CLOCKS_PER_SEC 1000000
#define CLK_TCK CLOCKS_PER_SEC
#define TIME_UTC 1
#define MAX_TIMESTR 70
#define CLOCK_MONOTONIC ((clockid_t)0)
#define CLOCK_REALTIME ((clockid_t)-1)
#define CLOCK_PROCESS_CPUTIME_ID ((clockid_t)-2)
#define CLOCK_THREAD_CPUTIME_ID ((clockid_t)-3)
#define TIMER_ABSTIME 1 /* absolute timer flag */
struct timespec {
time_t tv_sec;
long tv_nsec;
};
struct itimerspec {
struct timespec it_interval;
struct timespec it_value;
};
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
int tm_gmtoff;
char *tm_zone;
};
extern char *tzname[2];
extern int daylight;
extern long timezone;
#ifdef __cplusplus
extern "C" {
#endif
extern clock_t clock(void);
extern double difftime(time_t time1, time_t time2);
extern time_t mktime(struct tm *tm);
extern time_t time(time_t *timer);
extern char *asctime(const struct tm *tm);
extern char *asctime_r(const struct tm *timep, char *buffer);
extern char *ctime(const time_t *timer);
extern char *ctime_r(const time_t *timer, char *buffer);
extern struct tm *gmtime(const time_t *timer);
extern struct tm *gmtime_r(const time_t *timer, struct tm *tm);
extern struct tm *localtime(const time_t *timer);
extern struct tm *localtime_r(const time_t *timer, struct tm *tm);
extern int nanosleep(const struct timespec *, struct timespec *);
extern size_t strftime(char *buffer, size_t maxSize, const char *format,
const struct tm *tm);
extern size_t strftime_l(char *buffer, size_t maxSize, const char *format,
const struct tm *tm, locale_t locale);
extern char *strptime(const char *buf, const char *format, struct tm *tm);
int clock_getres(clockid_t clockID, struct timespec* resolution);
int clock_gettime(clockid_t clockID, struct timespec* _time);
int clock_settime(clockid_t clockID, const struct timespec* _time);
int clock_nanosleep(clockid_t clockID, int flags,
const struct timespec* _time, struct timespec* remainingTime);
int clock_getcpuclockid(pid_t pid, clockid_t* _clockID);
int timer_create(clockid_t clockID, struct sigevent* event,
timer_t* timerID);
int timer_delete(timer_t timerID);
int timer_gettime(timer_t timerID, struct itimerspec* value);
int timer_settime(timer_t timerID, int flags,
const struct itimerspec* value, struct itimerspec* oldValue);
int timer_getoverrun(timer_t timerID);
int timespec_get(struct timespec *ts, int base);
extern void tzset(void);
extern int stime(const time_t *t);
#ifdef __cplusplus
}
#endif
#endif