]>
Commit | Line | Data |
---|---|---|
064af421 | 1 | /* |
3d6702a2 | 2 | * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. |
064af421 | 3 | * |
a14bc59f BP |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | * you may not use this file except in compliance with the License. | |
6 | * You may obtain a copy of the License at: | |
064af421 | 7 | * |
a14bc59f BP |
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
9 | * | |
10 | * Unless required by applicable law or agreed to in writing, software | |
11 | * distributed under the License is distributed on an "AS IS" BASIS, | |
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | * See the License for the specific language governing permissions and | |
14 | * limitations under the License. | |
064af421 BP |
15 | */ |
16 | ||
17 | #ifndef TIMEVAL_H | |
18 | #define TIMEVAL_H 1 | |
19 | ||
20 | #include <time.h> | |
21 | #include "type-props.h" | |
22 | #include "util.h" | |
23 | ||
fbfffdbb BP |
24 | #ifdef __cplusplus |
25 | extern "C" { | |
26 | #endif | |
27 | ||
f43e80e0 | 28 | struct ds; |
064af421 | 29 | struct pollfd; |
c73814a3 | 30 | struct timespec; |
064af421 BP |
31 | struct timeval; |
32 | ||
33 | /* POSIX allows floating-point time_t, but we don't support it. */ | |
34 | BUILD_ASSERT_DECL(TYPE_IS_INTEGER(time_t)); | |
35 | ||
36 | /* We do try to cater to unsigned time_t, but I want to know about it if we | |
37 | * ever encounter such a platform. */ | |
38 | BUILD_ASSERT_DECL(TYPE_IS_SIGNED(time_t)); | |
39 | ||
40 | #define TIME_MAX TYPE_MAXIMUM(time_t) | |
41 | #define TIME_MIN TYPE_MINIMUM(time_t) | |
42 | ||
c73814a3 JG |
43 | /* Interval between updates to the reported time, in ms. This should not be |
44 | * adjusted much below 10 ms or so with the current implementation, or too | |
45 | * much time will be wasted in signal handlers and calls to clock_gettime(). */ | |
67a2f473 | 46 | #define TIME_UPDATE_INTERVAL 25 |
064af421 | 47 | |
3d6702a2 BP |
48 | /* True on systems that support a monotonic clock. Compared to just getting |
49 | * the value of a variable, clock_gettime() is somewhat expensive, even on | |
50 | * systems that try hard to optimize it (such as x86-64 Linux), so it's | |
51 | * worthwhile to minimize calls via caching. */ | |
3d7cab5f | 52 | #ifndef CACHE_TIME |
3d6702a2 | 53 | #if defined ESX |
361906b1 EJ |
54 | #define CACHE_TIME 0 |
55 | #else | |
56 | #define CACHE_TIME 1 | |
57 | #endif | |
3d7cab5f | 58 | #endif /* ifndef CACHE_TIME */ |
361906b1 | 59 | |
dc81071d BP |
60 | void time_disable_restart(void); |
61 | void time_enable_restart(void); | |
03fbffbd | 62 | void time_postfork(void); |
064af421 BP |
63 | void time_refresh(void); |
64 | time_t time_now(void); | |
c73814a3 | 65 | time_t time_wall(void); |
064af421 | 66 | long long int time_msec(void); |
c73814a3 JG |
67 | long long int time_wall_msec(void); |
68 | void time_timespec(struct timespec *); | |
69 | void time_wall_timespec(struct timespec *); | |
064af421 | 70 | void time_alarm(unsigned int secs); |
cee03df4 BP |
71 | int time_poll(struct pollfd *, int n_pollfds, long long int timeout_when, |
72 | int *elapsed); | |
a4575748 | 73 | bool time_cached(void); |
064af421 | 74 | |
c73814a3 | 75 | long long int timespec_to_msec(const struct timespec *); |
e7cfedd6 BP |
76 | long long int timeval_to_msec(const struct timeval *); |
77 | ||
279c9e03 BP |
78 | void xgettimeofday(struct timeval *); |
79 | ||
959ec62e | 80 | int get_cpu_usage(void); |
f43e80e0 | 81 | void format_backtraces(struct ds *, size_t min_count); |
959ec62e | 82 | |
4ae90ff9 BP |
83 | long long int time_boot_msec(void); |
84 | ||
fbfffdbb BP |
85 | #ifdef __cplusplus |
86 | } | |
87 | #endif | |
88 | ||
064af421 | 89 | #endif /* timeval.h */ |