2
0

mod.rs 769 B

12345678910111213141516171819202122232425262728293031
  1. //! sys/time implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xsh/systime.h.html
  2. use crate::{
  3. header::sys_time::{gettimeofday, timeval, timezone},
  4. platform::types::*,
  5. };
  6. #[repr(C)]
  7. #[derive(Default)]
  8. pub struct timeb {
  9. pub time: time_t,
  10. pub millitm: c_ushort,
  11. pub timezone: c_short,
  12. pub dstflag: c_short,
  13. }
  14. #[no_mangle]
  15. pub unsafe extern "C" fn ftime(tp: *mut timeb) -> c_int {
  16. let mut tv = timeval::default();
  17. let mut tz = timezone::default();
  18. if gettimeofday(&mut tv, &mut tz) < 0 {
  19. return -1;
  20. }
  21. (*tp).time = tv.tv_sec;
  22. (*tp).millitm = (tv.tv_usec / 1000) as c_ushort;
  23. (*tp).timezone = tz.tz_minuteswest as c_short;
  24. (*tp).dstflag = tz.tz_dsttime as c_short;
  25. 0
  26. }