Flutter Engine
The Flutter Engine
timerfd.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_FML_PLATFORM_LINUX_TIMERFD_H_
6#define FLUTTER_FML_PLATFORM_LINUX_TIMERFD_H_
7
8#include "flutter/fml/time/time_point.h"
9
10// clang-format off
11#if __has_include(<sys/timerfd.h>) && \
12 (!defined(__ANDROID_API__) || __ANDROID_API__ >= 19)
13 // sys/timerfd.h is always present in Android NDK due to unified headers,
14 // but timerfd functions are only available on API 19 or later.
15// clang-format on
16
17#include <sys/timerfd.h>
18
19#define FML_TIMERFD_AVAILABLE 1
20
21#else // __has_include(<sys/timerfd.h>)
22
23#define FML_TIMERFD_AVAILABLE 0
24
25#include <sys/types.h>
26// Must come after sys/types
27#include <linux/time.h>
28
29#define TFD_TIMER_ABSTIME (1 << 0)
30#define TFD_TIMER_CANCEL_ON_SET (1 << 1)
31
32#define TFD_CLOEXEC O_CLOEXEC
33#define TFD_NONBLOCK O_NONBLOCK
34
35int timerfd_create(int clockid, int flags);
36
37int timerfd_settime(int ufc,
38 int flags,
39 const struct itimerspec* utmr,
40 struct itimerspec* otmr);
41
42#endif // __has_include(<sys/timerfd.h>)
43
44namespace fml {
45
46/// Rearms the timer to expire at the given time point.
47bool TimerRearm(int fd, fml::TimePoint time_point);
48
49/// Drains the timer FD and returns true if it has expired. This may be false in
50/// case the timer read is non-blocking and this routine was called before the
51/// timer expiry.
52bool TimerDrain(int fd);
53
54} // namespace fml
55
56#endif // FLUTTER_FML_PLATFORM_LINUX_TIMERFD_H_
FlutterSemanticsFlag flags
Definition: ascii_trie.cc:9
bool TimerRearm(int fd, fml::TimePoint time_point)
Rearms the timer to expire at the given time point.
Definition: timerfd.cc:38
bool TimerDrain(int fd)
Definition: timerfd.cc:59
int timerfd_settime(int ufc, int flags, const struct itimerspec *utmr, struct itimerspec *otmr)
Definition: timerfd.cc:23
int timerfd_create(int clockid, int flags)
Definition: timerfd.cc:19