anchao commented on code in PR #17222:
URL: https://github.com/apache/nuttx/pull/17222#discussion_r2451757361


##########
include/nuttx/sched.h:
##########
@@ -251,6 +251,7 @@ enum tstate_e
   TSTATE_TASK_RUNNING,        /* READY_TO_RUN - And running */
 
   TSTATE_TASK_INACTIVE,       /* BLOCKED      - Initialized but not yet 
activated */
+  TSTATE_SLEEPING,            /* BLOCKED      - Waiting for wakeup or timeout 
*/
   TSTATE_WAIT_SEM,            /* BLOCKED      - Waiting for a semaphore */
   TSTATE_WAIT_SIG,            /* BLOCKED      - Waiting for a signal */

Review Comment:
   Reusing the signal list is actually a tricky implementation.
   1. It doesn't add any additional code size or new system state.
   2. Threads already sleeping via a signal are not affected, as kernel api 
won't enter cancellation points.
   3. Timeouts will call the corresponding timeout function, without any side 
effects.
   But I don't object to adding new status.



##########
sched/sched/sched_wakeup.c:
##########
@@ -0,0 +1,85 @@
+/****************************************************************************
+ * sched/sched/sched_wakeup.c
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * 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/irq.h>
+#include <nuttx/clock.h>
+
+#include "sched/sched.h"
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: nxsched_wakeup
+ *
+ * Description:
+ *   The nxsched_wakeup() function is used to wake up a task that is
+ *   currently in the sleeping state before its timeout expires.
+ *
+ *   This function can be used by internal scheduler logic or by
+ *   system-level components that need to resume a sleeping task early.
+ *
+ * Input Parameters:
+ *   tcb - Pointer to the TCB of the task to be awakened.
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+void nxsched_wakeup(FAR struct tcb_s *tcb)

Review Comment:
   merge into sched_sleep.c



-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to