1c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/*
2c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * Copyright (C) 2008 The Android Open Source Project
3c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * All rights reserved.
4c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *
5c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * Redistribution and use in source and binary forms, with or without
6c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * modification, are permitted provided that the following conditions
7c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * are met:
8c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *  * Redistributions of source code must retain the above copyright
9c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *    notice, this list of conditions and the following disclaimer.
10c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *  * Redistributions in binary form must reproduce the above copyright
11c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *    notice, this list of conditions and the following disclaimer in
12c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *    the documentation and/or other materials provided with the
13c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *    distribution.
14c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *
15c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * SUCH DAMAGE.
27c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner */
28c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifndef _TIME_H_
29c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define _TIME_H_
30c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
31c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <sys/cdefs.h>
32c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <sys/time.h>
33c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
34c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define __ARCH_SI_UID_T __kernel_uid32_t
35c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <asm/siginfo.h>
36c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#undef __ARCH_SI_UID_T
37c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
38c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner__BEGIN_DECLS
39c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
40c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern time_t   time(time_t *);
41c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern int      nanosleep(const struct timespec *, struct timespec *);
42c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
43c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern char *strtotimeval(const char *str, struct timeval *tv);
44c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
45c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct tm {
46c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   int     tm_sec;         /* seconds */
47c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   int     tm_min;         /* minutes */
48c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   int     tm_hour;        /* hours */
49c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   int     tm_mday;        /* day of the month */
50c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   int     tm_mon;         /* month */
51c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   int     tm_year;        /* year */
52c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   int     tm_wday;        /* day of the week */
53c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   int     tm_yday;        /* day in the year */
54c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   int     tm_isdst;       /* daylight saving time */
55c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
56c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   long int tm_gmtoff;     /* Seconds east of UTC.  */
57c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner   const char *tm_zone;    /* Timezone abbreviation.  */
58c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
59c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
60c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
61c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/* defining TM_ZONE indicates that we have a "timezone abbreviation" field in
62c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner * struct tm, the value should be the field name
63c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner */
64c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define   TM_ZONE   tm_zone
65c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
66c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern char* asctime(const struct tm* a);
67c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern char* asctime_r(const struct tm* a, char* buf);
68c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
69c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/* Return the difference between TIME1 and TIME0.  */
70c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern double difftime (time_t __time1, time_t __time0);
71c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern time_t mktime (struct tm *a);
72c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
73c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern struct tm*  localtime(const time_t *t);
74c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern struct tm*  localtime_r(const time_t *timep, struct tm *result);
75c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
76c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern struct tm*  gmtime(const time_t *timep);
77c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern struct tm*  gmtime_r(const time_t *timep, struct tm *result);
78c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
79c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern char*       strptime(const char *buf, const char *fmt, struct tm *tm);
80c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern size_t      strftime(char *s, size_t max, const char *format, const struct tm *tm);
81c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
82c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern char *ctime(const time_t *timep);
83c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern char *ctime_r(const time_t *timep, char *buf);
84c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
85c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern void  tzset(void);
86c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
87c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/* global includes */
88c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern char*     tzname[];
897c2ba504e9c10e67f27e7b0aff90981c469d2701David 'Digit' Turner#if 0 /* MISSING FROM BIONIC */
90c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern int       daylight;
91c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern long int  timezone;
927c2ba504e9c10e67f27e7b0aff90981c469d2701David 'Digit' Turner#endif /* MISSING */
93c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
94c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define CLOCKS_PER_SEC     1000000
95c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
96c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern clock_t   clock(void);
97c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
98c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/* BIONIC: extra linux clock goodies */
997761beeb56c857150052b0576e639375f4b1a55cDavid 'Digit' Turnerextern int clock_getres(clockid_t, struct timespec *);
1007761beeb56c857150052b0576e639375f4b1a55cDavid 'Digit' Turnerextern int clock_gettime(clockid_t, struct timespec *);
1017761beeb56c857150052b0576e639375f4b1a55cDavid 'Digit' Turnerextern int clock_settime(clockid_t, const struct timespec *);
1027761beeb56c857150052b0576e639375f4b1a55cDavid 'Digit' Turnerextern int clock_nanosleep(clockid_t, int, const struct timespec *, struct timespec *);
103c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
104c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define CLOCK_REALTIME             0
105c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define CLOCK_MONOTONIC            1
106c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define CLOCK_PROCESS_CPUTIME_ID   2
107c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define CLOCK_THREAD_CPUTIME_ID    3
108c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define CLOCK_REALTIME_HR          4
109c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define CLOCK_MONOTONIC_HR         5
110c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
111c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern int  timer_create(int, struct sigevent*, timer_t*);
112c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern int  timer_delete(timer_t);
113c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern int  timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue);
114c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern int  timer_gettime(timer_t timerid, struct itimerspec *value);
115c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerextern int  timer_getoverrun(timer_t  timerid);
116c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
117c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner__END_DECLS
118c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
119c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif /* _TIME_H_ */
120