]> Zhao Yanbai Git Server - minix.git/commitdiff
pm: notify readclock of reboot(RBT_POWEROFF) 99/699/2
authorThomas Cort <tcort@minix3.org>
Fri, 2 Aug 2013 14:10:59 +0000 (10:10 -0400)
committerThomas Cort <tcort@minix3.org>
Mon, 5 Aug 2013 14:23:00 +0000 (10:23 -0400)
Some ARM chips handle power-off with RTC alarms. PM notifies
readclock (the driver for RTCs) about the impending power-off.
If the power-off mechanism is an RTC alarm, readclock will
set the alarm. If not, there is no effect.

Change-Id: Iee00066def2a0f742cdf0dbde8e32b376edf1b78

servers/pm/misc.c

index 0576a55135b081e465544e710ecc4834ded66ead..d37e4d768365a84cf401fa74ed7a8fc8c777e959 100644 (file)
@@ -298,6 +298,15 @@ int do_reboot()
   abort_flag = (unsigned) m_in.reboot_flag;
   if (abort_flag >= RBT_INVALID) return(EINVAL); 
 
+  /* notify readclock (some arm systems power off via RTC alarms) */
+  if (abort_flag == RBT_POWEROFF) {
+       endpoint_t readclock_ep;
+       if (ds_retrieve_label_endpt("readclock.drv", &readclock_ep) == OK) {
+               message m; /* no params to set, nothing we can do if it fails */
+               _taskcall(readclock_ep, RTCDEV_PWR_OFF, &m);
+       }
+  }
+
   /* Order matters here. When VFS is told to reboot, it exits all its
    * processes, and then would be confused if they're exited again by
    * SIGKILL. So first kill, then reboot.