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