ia64/xen-unstable

annotate xen/include/xen/time.h @ 18752:f12d9595d07c

Change timer implementation to allow variable 'slop' in how late
timers are fired. The default continues to be 50us, but this can be
configured on Xen's command line.

Signed-off-by: Yu Ke <ke.yu@intel.com>
Signed-off-by: Wei Gang <gang.wei@intel.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Fri Oct 31 14:02:39 2008 +0000 (2008-10-31)
parents f2148e532c81
children eed39afde7dd
rev   line source
keir@15948 1 /******************************************************************************
keir@15948 2 * time.h
kaf24@1210 3 *
keir@15948 4 * Copyright (c) 2002-2003 Rolf Neugebauer
keir@15948 5 * Copyright (c) 2002-2005 K A Fraser
kaf24@1210 6 */
kaf24@1210 7
kaf24@1211 8 #ifndef __XEN_TIME_H__
kaf24@1211 9 #define __XEN_TIME_H__
kaf24@1210 10
kaf24@1210 11 #include <xen/types.h>
kaf24@2789 12 #include <public/xen.h>
kaf24@3645 13 #include <asm/time.h>
kaf24@1210 14
kaf24@5828 15 extern int init_xen_time(void);
keir@17550 16 extern void cstate_save_tsc(void);
keir@17550 17 extern void cstate_restore_tsc(void);
kaf24@1210 18
kaf24@1488 19 extern unsigned long cpu_khz;
kaf24@1210 20
cl349@2922 21 struct domain;
cl349@2922 22
kaf24@1210 23 /*
kaf24@1210 24 * System Time
kaf24@1210 25 * 64 bit value containing the nanoseconds elapsed since boot time.
kaf24@1210 26 * This value is adjusted by frequency drift.
kaf24@1210 27 * NOW() returns the current time.
kaf24@1210 28 * The other macros are for convenience to approximate short intervals
kaf24@1210 29 * of real time into system time
kaf24@1210 30 */
kaf24@1210 31
kaf24@1488 32 typedef s64 s_time_t;
kaf24@1488 33
kaf24@1210 34 s_time_t get_s_time(void);
kfraser@11890 35 unsigned long get_localtime(struct domain *d);
kfraser@11890 36
kfraser@11890 37 struct tm {
kfraser@11890 38 int tm_sec; /* seconds */
kfraser@11890 39 int tm_min; /* minutes */
kfraser@11890 40 int tm_hour; /* hours */
kfraser@11890 41 int tm_mday; /* day of the month */
kfraser@11890 42 int tm_mon; /* month */
kfraser@11890 43 int tm_year; /* year */
kfraser@11890 44 int tm_wday; /* day of the week */
kfraser@11890 45 int tm_yday; /* day in the year */
kfraser@11890 46 int tm_isdst; /* daylight saving time */
kfraser@11890 47 };
kfraser@11890 48 struct tm gmtime(unsigned long t);
kaf24@1210 49
keir@17720 50 #define SYSTEM_TIME_HZ 1000000000ULL
kaf24@1486 51 #define NOW() ((s_time_t)get_s_time())
kaf24@5940 52 #define SECONDS(_s) ((s_time_t)((_s) * 1000000000ULL))
kaf24@5940 53 #define MILLISECS(_ms) ((s_time_t)((_ms) * 1000000ULL))
kaf24@5940 54 #define MICROSECS(_us) ((s_time_t)((_us) * 1000ULL))
keir@18752 55 #define STIME_MAX ((s_time_t)((uint64_t)~0ull>>1))
kaf24@1210 56
kaf24@9592 57 extern void update_vcpu_system_time(struct vcpu *v);
kaf24@9592 58 extern void update_domain_wallclock_time(struct domain *d);
kaf24@9592 59
kaf24@4294 60 extern void do_settime(
kaf24@6048 61 unsigned long secs, unsigned long nsecs, u64 system_time_base);
kaf24@1210 62
kaf24@9284 63 extern void send_timer_event(struct vcpu *v);
kaf24@9284 64
keir@17951 65 void domain_set_time_offset(struct domain *d, int32_t time_offset_seconds);
keir@17951 66
kaf24@1211 67 #endif /* __XEN_TIME_H__ */
kaf24@3914 68
kaf24@3914 69 /*
kaf24@3914 70 * Local variables:
kaf24@3914 71 * mode: C
kaf24@3914 72 * c-set-style: "BSD"
kaf24@3914 73 * c-basic-offset: 4
kaf24@3914 74 * tab-width: 4
kaf24@3914 75 * indent-tabs-mode: nil
kaf24@3988 76 * End:
kaf24@3914 77 */