xiaoxiang781216 commented on a change in pull request #2625:
URL: https://github.com/apache/incubator-nuttx/pull/2625#discussion_r556410633



##########
File path: sched/wdog/wd_getidletime.c
##########
@@ -0,0 +1,64 @@
+/****************************************************************************
+ * sched/wdog/wd_getidletime.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <nuttx/wdog.h>
+#include <nuttx/irq.h>
+
+#include "wdog/wdog.h"
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: wd_getidletime
+ *
+ * Description:
+ *   This function returns the idle time.
+ *
+ * Input Parameters:
+ *   None
+ *
+ * Returned Value:
+ *   The time in system ticks remaining for idle.
+ *   Zero means system is busy.
+ *
+ ****************************************************************************/
+
+int wd_getidletime(void)
+{
+  int        idletime = -1;
+  irqstate_t flags;
+
+  flags = enter_critical_section();
+
+  FAR struct wdog_s *curr = (FAR struct wdog_s *)g_wdactivelist.head;
+
+  idletime = (curr ? curr->lag : 0);

Review comment:
       Do you want to use the returned value to decide how long the device can 
sleep?

##########
File path: sched/wdog/wd_setsleepticks.c
##########
@@ -0,0 +1,65 @@
+/****************************************************************************
+ * sched/wdog/wd_setsleepticks.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <nuttx/wdog.h>
+#include <nuttx/irq.h>
+
+#include "wdog/wdog.h"
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: wd_setsleepticks
+ *
+ * Description:
+ *   This function will update watchdogs' lag.
+ *
+ * Input Parameters:
+ *   ticks - sleep ticks
+ *
+ * Returned Value:
+ *   Zero means success.
+ *
+ ****************************************************************************/
+
+int wd_setsleepticks(clock_t ticks)
+{
+  irqstate_t flags;
+  FAR struct wdog_s * curr;
+
+  flags = enter_critical_section();
+
+  for (curr = (FAR struct wdog_s *)(g_wdactivelist.head);
+       curr; curr = curr->next)
+    {
+      curr->lag -= ticks;

Review comment:
       Why not directly increase the system tick by nxsched_process_timer? it's 
better to update the system time to math the real elapse.

##########
File path: include/nuttx/clock.h
##########
@@ -436,6 +436,22 @@ int clock_systime_timespec(FAR struct timespec *ts);
 int clock_cpuload(int pid, FAR struct cpuload_s *cpuload);
 #endif
 
+/****************************************************************************
+ * Name:  clock_systime_steps
+ *
+ * Description:
+ *   Add system time by idle ticks.
+ *
+ * Input Parameters:
+ *   ticks - Idle ticks
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+void clock_systime_steps(sclock_t ticks);

Review comment:
       should we move it to arch.h like nxsched_process_timer?

##########
File path: include/nuttx/clock.h
##########
@@ -436,6 +436,22 @@ int clock_systime_timespec(FAR struct timespec *ts);
 int clock_cpuload(int pid, FAR struct cpuload_s *cpuload);
 #endif
 
+/****************************************************************************
+ * Name:  clock_systime_steps
+ *
+ * Description:
+ *   Add system time by idle ticks.
+ *
+ * Input Parameters:
+ *   ticks - Idle ticks
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+void clock_systime_steps(sclock_t ticks);

Review comment:
       I think from sched level, OS don't need to know whether this wakeup come 
from the deep sleep or not. Why not reuse nxsched_process_timer instead?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to