1#[cfg(x86_64)]
2use std::arch::x86_64;
3use std::ffi::CString;
4use std::ptr;
5
6use sys::*;
7
8pub struct Device {
9    pub(crate) handle: RTCDevice,
10}
11
12impl Device {
13    pub fn new() -> Device {
14        #[cfg(x86_64)]
18        unsafe {
19            x86_64::_MM_SET_FLUSH_ZERO_MODE(x86_64::_MM_FLUSH_ZERO_ON);
20        }
21
22        Device {
23            handle: unsafe { rtcNewDevice(ptr::null()) },
24        }
25    }
26    pub fn debug() -> Device {
27        let cfg = CString::new("verbose=4").unwrap();
28        Device {
29            handle: unsafe { rtcNewDevice(cfg.as_ptr()) },
30        }
31    }
32    }
35
36impl Drop for Device {
37    fn drop(&mut self) {
38        unsafe {
39            rtcReleaseDevice(self.handle);
40        }
41    }
42}
43
44unsafe impl Sync for Device {}