/pliant/linux/schedule/rtc.pli
 
 1  module "/pliant/language/os.pli" 
 2   
 3  constant bug true 
 4   
 5   
 6  type os_rtc_time 
 7    field Int tm_sec 
 8    field Int tm_min 
 9    field Int tm_hour 
 10    field Int tm_mday 
 11    field Int tm_mon 
 12    field Int tm_year 
 13    field Int tm_wday 
 14    field Int tm_yday 
 15    field Int tm_isdst 
 16   
 17  function rtc_get_datetime -> dt 
 18    arg DateTime dt 
 19    var Int := os_open "/dev/rtc" os_O_RDONLY 0 
 20    os_ioctl 80247009h addressof:(var os_rtc_time t) 
 21    t:tm_year += 1900 
 22    if bug 
 23      tm_mon += 1 
 24    dt := datetime t:tm_year t:tm_mon t:tm_mday t:tm_hour t:tm_min t:tm_sec 0.0 
 25    os_close h 
 26   
 27  function rtc_set_datetime dt 
 28    arg DateTime dt 
 29    var Int := os_open "/dev/rtc" os_O_RDWR 0 
 30    var os_rtc_time t 
 31    dt split t:tm_year t:tm_mon t:tm_mday t:tm_hour t:tm_min t:tm_sec (var Float drop) 
 32    t:tm_year -= 1900 
 33    if bug 
 34      tm_mon -= 1 
 35    os_ioctl 4024700Ah addressof:(var os_rtc_time t) 
 36    os_close h 
 37   
 38  export rtc_get_datetime rtc_set_datetime