/root/src/xen/xen/include/xen/time.h
Line | Count | Source (jump to first uncovered line) |
1 | | /****************************************************************************** |
2 | | * time.h |
3 | | * |
4 | | * Copyright (c) 2002-2003 Rolf Neugebauer |
5 | | * Copyright (c) 2002-2005 K A Fraser |
6 | | */ |
7 | | |
8 | | #ifndef __XEN_TIME_H__ |
9 | | #define __XEN_TIME_H__ |
10 | | |
11 | | #include <xen/types.h> |
12 | | #include <public/xen.h> |
13 | | |
14 | | extern int init_xen_time(void); |
15 | | extern void cstate_restore_tsc(void); |
16 | | |
17 | | extern unsigned long cpu_khz; |
18 | | extern unsigned long pit0_ticks; |
19 | | |
20 | | struct domain; |
21 | | struct vcpu; |
22 | | |
23 | | /* |
24 | | * System Time |
25 | | * 64 bit value containing the nanoseconds elapsed since boot time. |
26 | | * This value is adjusted by frequency drift. |
27 | | * NOW() returns the current time. |
28 | | * The other macros are for convenience to approximate short intervals |
29 | | * of real time into system time |
30 | | */ |
31 | | |
32 | | typedef s64 s_time_t; |
33 | | #define PRI_stime PRId64 |
34 | | |
35 | | s_time_t get_s_time_fixed(u64 at_tick); |
36 | | s_time_t get_s_time(void); |
37 | | unsigned long get_localtime(struct domain *d); |
38 | | uint64_t get_localtime_us(struct domain *d); |
39 | | |
40 | | struct tm { |
41 | | int tm_sec; /* seconds */ |
42 | | int tm_min; /* minutes */ |
43 | | int tm_hour; /* hours */ |
44 | | int tm_mday; /* day of the month */ |
45 | | int tm_mon; /* month */ |
46 | | int tm_year; /* year */ |
47 | | int tm_wday; /* day of the week */ |
48 | | int tm_yday; /* day in the year */ |
49 | | int tm_isdst; /* daylight saving time */ |
50 | | }; |
51 | | struct tm gmtime(unsigned long t); |
52 | | struct tm wallclock_time(uint64_t *ns); |
53 | | |
54 | 0 | #define SYSTEM_TIME_HZ 1000000000ULL |
55 | 26.9M | #define NOW() ((s_time_t)get_s_time()) |
56 | 152k | #define SECONDS(_s) ((s_time_t)((_s) * 1000000000ULL)) |
57 | 6.47M | #define MILLISECS(_ms) ((s_time_t)((_ms) * 1000000ULL)) |
58 | 3.74M | #define MICROSECS(_us) ((s_time_t)((_us) * 1000ULL)) |
59 | 8.35M | #define STIME_MAX ((s_time_t)((uint64_t)~0ull>>1)) |
60 | | /* Chosen so (NOW() + delta) wont overflow without an uptime of 200 years */ |
61 | 0 | #define STIME_DELTA_MAX ((s_time_t)((uint64_t)~0ull>>2)) |
62 | | |
63 | | /* Explicitly OR with 1 just in case version number gets out of sync. */ |
64 | 18.4E | #define version_update_begin(v) (((v) + 1) | 1) |
65 | 18.4E | #define version_update_end(v) ((v) + 1) |
66 | | extern void update_vcpu_system_time(struct vcpu *v); |
67 | | extern void update_domain_wallclock_time(struct domain *d); |
68 | | |
69 | | extern void do_settime( |
70 | | u64 secs, unsigned int nsecs, u64 system_time_base); |
71 | | |
72 | | extern void send_timer_event(struct vcpu *v); |
73 | | |
74 | | void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds); |
75 | | |
76 | | #include <asm/time.h> |
77 | | |
78 | | #endif /* __XEN_TIME_H__ */ |
79 | | |
80 | | /* |
81 | | * Local variables: |
82 | | * mode: C |
83 | | * c-file-style: "BSD" |
84 | | * c-basic-offset: 4 |
85 | | * tab-width: 4 |
86 | | * indent-tabs-mode: nil |
87 | | * End: |
88 | | */ |