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