12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- //! sys/time implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xsh/systime.h.html
- use crate::c_str::CStr;
- use crate::header::time::timespec;
- use crate::platform::types::*;
- use crate::platform::{Pal, PalSignal, Sys};
- pub const ITIMER_REAL: c_int = 0;
- pub const ITIMER_VIRTUAL: c_int = 1;
- pub const ITIMER_PROF: c_int = 2;
- #[repr(C)]
- #[derive(Default)]
- pub struct timeval {
- pub tv_sec: time_t,
- pub tv_usec: suseconds_t,
- }
- #[repr(C)]
- #[derive(Default)]
- pub struct timezone {
- pub tz_minuteswest: c_int,
- pub tz_dsttime: c_int,
- }
- #[repr(C)]
- #[derive(Default)]
- pub struct itimerval {
- pub it_interval: timeval,
- pub it_value: timeval,
- }
- #[repr(C)]
- pub struct fd_set {
- pub fds_bits: [c_long; 16usize],
- }
- #[no_mangle]
- pub extern "C" fn getitimer(which: c_int, value: *mut itimerval) -> c_int {
- Sys::getitimer(which, value)
- }
- #[no_mangle]
- pub extern "C" fn setitimer(
- which: c_int,
- value: *const itimerval,
- ovalue: *mut itimerval,
- ) -> c_int {
- Sys::setitimer(which, value, ovalue)
- }
- #[no_mangle]
- pub extern "C" fn gettimeofday(tp: *mut timeval, tzp: *mut timezone) -> c_int {
- Sys::gettimeofday(tp, tzp)
- }
- #[no_mangle]
- pub unsafe extern "C" fn utimes(path: *const c_char, times: *const timeval) -> c_int {
- let path = CStr::from_ptr(path);
- let times_spec = [
- timespec {
- tv_sec: (*times.offset(0)).tv_sec,
- tv_nsec: ((*times.offset(0)).tv_usec as i64) * 1000,
- },
- timespec {
- tv_sec: (*times.offset(1)).tv_sec,
- tv_nsec: ((*times.offset(1)).tv_usec as i64) * 1000,
- },
- ];
- Sys::utimens(path, times_spec.as_ptr())
- }
|