From 68a4e446d3a571d7e516ab4d457fb27220936b69 Mon Sep 17 00:00:00 2001 From: pravic Date: Thu, 14 Apr 2016 00:37:38 +0300 Subject: update docs --- doc/src/km/time.rs.html | 60 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) (limited to 'doc/src/km/time.rs.html') diff --git a/doc/src/km/time.rs.html b/doc/src/km/time.rs.html index 2476c7d..abcc81e 100644 --- a/doc/src/km/time.rs.html +++ b/doc/src/km/time.rs.html @@ -68,33 +68,89 @@ 24 25 26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54
 //! NT Time routines.
 
-/// System time is a count of 100-nanosecond intervals since January 1, 1601.
-pub type SYSTEMTIME = i64;
+use ::shared::{SYSTEMTIME};
+
+#[cfg(target_arch = "x86_64")]
+use ::shared::{KUSER_SHARED_DATA};
+
 
 extern "system"
 {
+	// The following exports exists only on x86 kernels.
+	// x64 drivers must use KUSER_SHARED_DATA to obtain these values.
+
+	#[cfg(target_arch = "x86")]
 	fn KeQuerySystemTime(CurrentTime: *mut SYSTEMTIME);
+	#[cfg(target_arch = "x86")]
 	fn KeQueryTickCount(TickCount: *mut i64);
+
 	/// Converts a GMT system time value to the local system time for the current time zone.
 	pub fn ExSystemTimeToLocalTime(SystemTime: *const SYSTEMTIME, LocalTime: *mut SYSTEMTIME);
 }
 
+
 /// Obtains the current system time.
+#[cfg(target_arch = "x86")]
 pub fn QuerySystemTime() -> SYSTEMTIME {
 	let mut t = 0i64;
 	unsafe { KeQuerySystemTime(&mut t) };
 	return t;
 }
 
+/// Obtains the current system time.
+#[cfg(target_arch = "x86_64")]
+pub fn QuerySystemTime() -> SYSTEMTIME {
+	let shared = KUSER_SHARED_DATA::get();
+	SYSTEMTIME::from(shared.SystemTime)
+}
+
+
 /// A count of the interval timer interrupts that have occurred since the system was booted.
+#[cfg(target_arch = "x86")]
 pub fn QueryTickCount() -> i64 {
 	let mut t = 0i64;
 	unsafe { KeQueryTickCount(&mut t) };
 	return t;
 }
+
+
+/// A count of the interval timer interrupts that have occurred since the system was booted.
+#[cfg(target_arch = "x86_64")]
+pub fn QueryTickCount() -> i64 {
+	let shared = KUSER_SHARED_DATA::get();
+	SYSTEMTIME::from(shared.TickCount)
+}
 
-- cgit v1.2.3