]>
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 | ||
366d0f11 GS |
43 | #ifdef _WIN32 |
44 | #define localtime_r(timep, result) localtime_s(result, timep) | |
45 | #define gmtime_r(timep, result) gmtime_s(result, timep) | |
46 | #endif /* _WIN32 */ | |
47 | ||
2b31d8e7 PI |
48 | struct tm_msec { |
49 | struct tm tm; | |
50 | int msec; | |
51 | }; | |
52 | ||
064af421 | 53 | time_t time_now(void); |
c73814a3 | 54 | time_t time_wall(void); |
064af421 | 55 | long long int time_msec(void); |
c73814a3 JG |
56 | long long int time_wall_msec(void); |
57 | void time_timespec(struct timespec *); | |
58 | void time_wall_timespec(struct timespec *); | |
064af421 | 59 | void time_alarm(unsigned int secs); |
4ca828d7 LS |
60 | int time_poll(struct pollfd *, int n_pollfds, HANDLE *handles, |
61 | long long int timeout_when, int *elapsed); | |
064af421 | 62 | |
c73814a3 | 63 | long long int timespec_to_msec(const struct timespec *); |
e7cfedd6 BP |
64 | long long int timeval_to_msec(const struct timeval *); |
65 | ||
2b31d8e7 PI |
66 | struct tm_msec *localtime_msec(long long int now, struct tm_msec *result); |
67 | struct tm_msec *gmtime_msec(long long int now, struct tm_msec *result); | |
68 | size_t strftime_msec(char *s, size_t max, const char *format, | |
69 | const struct tm_msec *); | |
279c9e03 | 70 | void xgettimeofday(struct timeval *); |
bc7ad7d4 | 71 | void xclock_gettime(clock_t, struct timespec *); |
279c9e03 | 72 | |
959ec62e BP |
73 | int get_cpu_usage(void); |
74 | ||
4ae90ff9 BP |
75 | long long int time_boot_msec(void); |
76 | ||
8661af79 | 77 | void timewarp_run(void); |
53d98a1e | 78 | |
fbfffdbb BP |
79 | #ifdef __cplusplus |
80 | } | |
81 | #endif | |
82 | ||
064af421 | 83 | #endif /* timeval.h */ |