Home | History | Annotate | Download | only in sys
      1 /*
      2  * Copyright (C) 2013 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 
     29 #pragma once
     30 
     31 /**
     32  * @file sys/timerfd.h
     33  * @brief Timer file descriptors.
     34  */
     35 
     36 #include <fcntl.h> /* For O_CLOEXEC and O_NONBLOCK. */
     37 #include <time.h>
     38 #include <sys/cdefs.h>
     39 #include <sys/types.h>
     40 
     41 __BEGIN_DECLS
     42 
     43 /** The timerfd_create() flag for a close-on-exec file descriptor. */
     44 #define TFD_CLOEXEC O_CLOEXEC
     45 /** The timerfd_create() flag for a non-blocking file descriptor. */
     46 #define TFD_NONBLOCK O_NONBLOCK
     47 
     48 /**
     49  * [timerfd_create(2)](http://man7.org/linux/man-pages/man2/timerfd_create.2.html) creates a
     50  * timer file descriptor.
     51  *
     52  * Returns the new file descriptor on success, and returns -1 and sets `errno` on failure.
     53  *
     54  * Available since API level 19.
     55  */
     56 int timerfd_create(clockid_t __clock, int __flags) __INTRODUCED_IN(19);
     57 
     58 /** The timerfd_settime() flag to use absolute rather than relative times. */
     59 #define TFD_TIMER_ABSTIME (1 << 0)
     60 /** The timerfd_settime() flag to cancel an absolute timer if the realtime clock changes. */
     61 #define TFD_TIMER_CANCEL_ON_SET (1 << 1)
     62 
     63 /**
     64  * [timerfd_settime(2)](http://man7.org/linux/man-pages/man2/timerfd_settime.2.html) starts or
     65  * stops a timer.
     66  *
     67  * Returns 0 on success, and returns -1 and sets `errno` on failure.
     68  *
     69  * Available since API level 19.
     70  */
     71 int timerfd_settime(int __fd, int __flags, const struct itimerspec* __new_value, struct itimerspec* __old_value) __INTRODUCED_IN(19);
     72 
     73 /**
     74  * [timerfd_gettime(2)](http://man7.org/linux/man-pages/man2/timerfd_gettime.2.html) queries the
     75  * current timer settings.
     76  *
     77  * Returns 0 on success, and returns -1 and sets `errno` on failure.
     78  *
     79  * Available since API level 19.
     80  */
     81 int timerfd_gettime(int __fd, struct itimerspec* __current_value) __INTRODUCED_IN(19);
     82 
     83 __END_DECLS
     84