1951a39d68df598db08dfced8b4707755864a0492Ying Wang/* 2951a39d68df598db08dfced8b4707755864a0492Ying Wang * Copyright (C) 2008 The Android Open Source Project 3951a39d68df598db08dfced8b4707755864a0492Ying Wang * All rights reserved. 4951a39d68df598db08dfced8b4707755864a0492Ying Wang * 5951a39d68df598db08dfced8b4707755864a0492Ying Wang * Redistribution and use in source and binary forms, with or without 6951a39d68df598db08dfced8b4707755864a0492Ying Wang * modification, are permitted provided that the following conditions 7951a39d68df598db08dfced8b4707755864a0492Ying Wang * are met: 8951a39d68df598db08dfced8b4707755864a0492Ying Wang * * Redistributions of source code must retain the above copyright 9951a39d68df598db08dfced8b4707755864a0492Ying Wang * notice, this list of conditions and the following disclaimer. 10951a39d68df598db08dfced8b4707755864a0492Ying Wang * * Redistributions in binary form must reproduce the above copyright 11951a39d68df598db08dfced8b4707755864a0492Ying Wang * notice, this list of conditions and the following disclaimer in 12951a39d68df598db08dfced8b4707755864a0492Ying Wang * the documentation and/or other materials provided with the 13951a39d68df598db08dfced8b4707755864a0492Ying Wang * distribution. 14951a39d68df598db08dfced8b4707755864a0492Ying Wang * 15951a39d68df598db08dfced8b4707755864a0492Ying Wang * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16951a39d68df598db08dfced8b4707755864a0492Ying Wang * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17951a39d68df598db08dfced8b4707755864a0492Ying Wang * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18951a39d68df598db08dfced8b4707755864a0492Ying Wang * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19951a39d68df598db08dfced8b4707755864a0492Ying Wang * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20951a39d68df598db08dfced8b4707755864a0492Ying Wang * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21951a39d68df598db08dfced8b4707755864a0492Ying Wang * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 22951a39d68df598db08dfced8b4707755864a0492Ying Wang * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 23951a39d68df598db08dfced8b4707755864a0492Ying Wang * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24951a39d68df598db08dfced8b4707755864a0492Ying Wang * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 25951a39d68df598db08dfced8b4707755864a0492Ying Wang * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26951a39d68df598db08dfced8b4707755864a0492Ying Wang * SUCH DAMAGE. 27951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 28951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _TIME_H_ 29951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _TIME_H_ 30951a39d68df598db08dfced8b4707755864a0492Ying Wang 31951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <sys/cdefs.h> 32951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <sys/time.h> 33951a39d68df598db08dfced8b4707755864a0492Ying Wang 34951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __ARCH_SI_UID_T __kernel_uid32_t 35951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/siginfo.h> 36951a39d68df598db08dfced8b4707755864a0492Ying Wang#undef __ARCH_SI_UID_T 37951a39d68df598db08dfced8b4707755864a0492Ying Wang 38951a39d68df598db08dfced8b4707755864a0492Ying Wang__BEGIN_DECLS 39951a39d68df598db08dfced8b4707755864a0492Ying Wang 40951a39d68df598db08dfced8b4707755864a0492Ying Wangextern time_t time(time_t *); 41951a39d68df598db08dfced8b4707755864a0492Ying Wangextern int nanosleep(const struct timespec *, struct timespec *); 42951a39d68df598db08dfced8b4707755864a0492Ying Wang 43951a39d68df598db08dfced8b4707755864a0492Ying Wangextern char *strtotimeval(const char *str, struct timeval *tv); 44951a39d68df598db08dfced8b4707755864a0492Ying Wang 45951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct tm { 46951a39d68df598db08dfced8b4707755864a0492Ying Wang int tm_sec; /* seconds */ 47951a39d68df598db08dfced8b4707755864a0492Ying Wang int tm_min; /* minutes */ 48951a39d68df598db08dfced8b4707755864a0492Ying Wang int tm_hour; /* hours */ 49951a39d68df598db08dfced8b4707755864a0492Ying Wang int tm_mday; /* day of the month */ 50951a39d68df598db08dfced8b4707755864a0492Ying Wang int tm_mon; /* month */ 51951a39d68df598db08dfced8b4707755864a0492Ying Wang int tm_year; /* year */ 52951a39d68df598db08dfced8b4707755864a0492Ying Wang int tm_wday; /* day of the week */ 53951a39d68df598db08dfced8b4707755864a0492Ying Wang int tm_yday; /* day in the year */ 54951a39d68df598db08dfced8b4707755864a0492Ying Wang int tm_isdst; /* daylight saving time */ 55951a39d68df598db08dfced8b4707755864a0492Ying Wang 56951a39d68df598db08dfced8b4707755864a0492Ying Wang long int tm_gmtoff; /* Seconds east of UTC. */ 57951a39d68df598db08dfced8b4707755864a0492Ying Wang const char *tm_zone; /* Timezone abbreviation. */ 58951a39d68df598db08dfced8b4707755864a0492Ying Wang 59951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 60951a39d68df598db08dfced8b4707755864a0492Ying Wang 61951a39d68df598db08dfced8b4707755864a0492Ying Wang/* defining TM_ZONE indicates that we have a "timezone abbreviation" field in 62951a39d68df598db08dfced8b4707755864a0492Ying Wang * struct tm, the value should be the field name 63951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 64951a39d68df598db08dfced8b4707755864a0492Ying Wang#define TM_ZONE tm_zone 65951a39d68df598db08dfced8b4707755864a0492Ying Wang 66951a39d68df598db08dfced8b4707755864a0492Ying Wangextern char* asctime(const struct tm* a); 67951a39d68df598db08dfced8b4707755864a0492Ying Wangextern char* asctime_r(const struct tm* a, char* buf); 68951a39d68df598db08dfced8b4707755864a0492Ying Wang 69951a39d68df598db08dfced8b4707755864a0492Ying Wang/* Return the difference between TIME1 and TIME0. */ 70951a39d68df598db08dfced8b4707755864a0492Ying Wangextern double difftime (time_t __time1, time_t __time0); 71951a39d68df598db08dfced8b4707755864a0492Ying Wangextern time_t mktime (struct tm *a); 72951a39d68df598db08dfced8b4707755864a0492Ying Wang 73951a39d68df598db08dfced8b4707755864a0492Ying Wangextern struct tm* localtime(const time_t *t); 74951a39d68df598db08dfced8b4707755864a0492Ying Wangextern struct tm* localtime_r(const time_t *timep, struct tm *result); 75951a39d68df598db08dfced8b4707755864a0492Ying Wang 76951a39d68df598db08dfced8b4707755864a0492Ying Wangextern struct tm* gmtime(const time_t *timep); 77951a39d68df598db08dfced8b4707755864a0492Ying Wangextern struct tm* gmtime_r(const time_t *timep, struct tm *result); 78951a39d68df598db08dfced8b4707755864a0492Ying Wang 79951a39d68df598db08dfced8b4707755864a0492Ying Wangextern char* strptime(const char *buf, const char *fmt, struct tm *tm); 80951a39d68df598db08dfced8b4707755864a0492Ying Wangextern size_t strftime(char *s, size_t max, const char *format, const struct tm *tm); 81951a39d68df598db08dfced8b4707755864a0492Ying Wang 82951a39d68df598db08dfced8b4707755864a0492Ying Wangextern char *ctime(const time_t *timep); 83951a39d68df598db08dfced8b4707755864a0492Ying Wangextern char *ctime_r(const time_t *timep, char *buf); 84951a39d68df598db08dfced8b4707755864a0492Ying Wang 85951a39d68df598db08dfced8b4707755864a0492Ying Wangextern void tzset(void); 86951a39d68df598db08dfced8b4707755864a0492Ying Wang 87951a39d68df598db08dfced8b4707755864a0492Ying Wang/* global includes */ 88951a39d68df598db08dfced8b4707755864a0492Ying Wangextern char* tzname[]; 89951a39d68df598db08dfced8b4707755864a0492Ying Wang#if 0 /* MISSING FROM BIONIC */ 90951a39d68df598db08dfced8b4707755864a0492Ying Wangextern int daylight; 91951a39d68df598db08dfced8b4707755864a0492Ying Wangextern long int timezone; 92951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif /* MISSING */ 93951a39d68df598db08dfced8b4707755864a0492Ying Wang 94951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CLOCKS_PER_SEC 1000000 95951a39d68df598db08dfced8b4707755864a0492Ying Wang 96951a39d68df598db08dfced8b4707755864a0492Ying Wangextern clock_t clock(void); 97951a39d68df598db08dfced8b4707755864a0492Ying Wang 98951a39d68df598db08dfced8b4707755864a0492Ying Wang/* BIONIC: extra linux clock goodies */ 99951a39d68df598db08dfced8b4707755864a0492Ying Wangextern int clock_getres(int, struct timespec *); 100951a39d68df598db08dfced8b4707755864a0492Ying Wangextern int clock_gettime(int, struct timespec *); 101951a39d68df598db08dfced8b4707755864a0492Ying Wang 102951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CLOCK_REALTIME 0 103951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CLOCK_MONOTONIC 1 104951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CLOCK_PROCESS_CPUTIME_ID 2 105951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CLOCK_THREAD_CPUTIME_ID 3 106951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CLOCK_REALTIME_HR 4 107951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CLOCK_MONOTONIC_HR 5 108951a39d68df598db08dfced8b4707755864a0492Ying Wang 109951a39d68df598db08dfced8b4707755864a0492Ying Wangextern int timer_create(int, struct sigevent*, timer_t*); 110951a39d68df598db08dfced8b4707755864a0492Ying Wangextern int timer_delete(timer_t); 111951a39d68df598db08dfced8b4707755864a0492Ying Wangextern int timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); 112951a39d68df598db08dfced8b4707755864a0492Ying Wangextern int timer_gettime(timer_t timerid, struct itimerspec *value); 113951a39d68df598db08dfced8b4707755864a0492Ying Wangextern int timer_getoverrun(timer_t timerid); 114951a39d68df598db08dfced8b4707755864a0492Ying Wang 115951a39d68df598db08dfced8b4707755864a0492Ying Wang__END_DECLS 116951a39d68df598db08dfced8b4707755864a0492Ying Wang 117951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif /* _TIME_H_ */ 118