This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 3927d878e4f96c47c4321824e047338a3a26ea41
Author: dongjiuzhu1 <[email protected]>
AuthorDate: Wed Oct 19 10:32:14 2022 +0800

    signal/nxsig_pengingset: move nxsig_pendingset to common header
    
    Signed-off-by: dongjiuzhu1 <[email protected]>
---
 include/nuttx/signal.h     | 19 +++++++++++++++++++
 sched/signal/sig_pending.c | 17 ++++++++++-------
 sched/signal/signal.h      |  4 ----
 3 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/include/nuttx/signal.h b/include/nuttx/signal.h
index 04e38ca4d2..76afe2e22d 100644
--- a/include/nuttx/signal.h
+++ b/include/nuttx/signal.h
@@ -32,6 +32,7 @@
 #include <signal.h>
 
 #include <nuttx/wqueue.h>
+#include <nuttx/sched.h>
 
 /****************************************************************************
  * Pre-processor Definitions
@@ -190,6 +191,24 @@ int nxsig_addset(FAR sigset_t *set, int signo);
 
 int nxsig_delset(FAR sigset_t *set, int signo);
 
+/****************************************************************************
+ * Name: nxsig_pendingset
+ *
+ * Description:
+ *   Convert the list of pending signals into a signal set
+ *
+ * Input Parameters:
+ *   stcb - The specific tcb of return pending set.
+ *
+ * Returned Value:
+ *   Return the pending signal set.
+ *
+ * Assumptions:
+ *
+ ****************************************************************************/
+
+sigset_t nxsig_pendingset(FAR struct tcb_s *stcb);
+
 /****************************************************************************
  * Name: nxsig_procmask
  *
diff --git a/sched/signal/sig_pending.c b/sched/signal/sig_pending.c
index e7628a2966..ec4a0412d1 100644
--- a/sched/signal/sig_pending.c
+++ b/sched/signal/sig_pending.c
@@ -58,16 +58,13 @@
 
 int sigpending(FAR sigset_t *set)
 {
-  FAR struct tcb_s *rtcb = this_task();
-  int ret = ERROR;
-
   if (set)
     {
-      *set = nxsig_pendingset(rtcb);
-      ret = OK;
+      *set = nxsig_pendingset(NULL);
+      return OK;
     }
 
-  return ret;
+  return ERROR;
 }
 
 /****************************************************************************
@@ -80,11 +77,17 @@ int sigpending(FAR sigset_t *set)
 
 sigset_t nxsig_pendingset(FAR struct tcb_s *stcb)
 {
-  FAR struct task_group_s *group = stcb->group;
+  FAR struct task_group_s *group;
   sigset_t sigpendset;
   FAR sigpendq_t *sigpend;
   irqstate_t flags;
 
+  if (stcb == NULL)
+    {
+      stcb = this_task();
+    }
+
+  group = stcb->group;
   DEBUGASSERT(group);
 
   sigpendset = NULL_SIGNAL_SET;
diff --git a/sched/signal/signal.h b/sched/signal/signal.h
index e257f57dfd..0553b8e3b0 100644
--- a/sched/signal/signal.h
+++ b/sched/signal/signal.h
@@ -163,10 +163,6 @@ _sa_handler_t      nxsig_default(FAR struct tcb_s *tcb, 
int signo,
 int                nxsig_default_initialize(FAR struct tcb_s *tcb);
 #endif
 
-/* sig_pending.c */
-
-sigset_t           nxsig_pendingset(FAR struct tcb_s *stcb);
-
 /* sig_dispatch.c */
 
 int                nxsig_tcbdispatch(FAR struct tcb_s *stcb,

Reply via email to