You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ma...@apache.org on 2022/10/31 03:47:05 UTC

[incubator-nuttx] 02/03: sched/spawn: Support task_spawnattr_[set|get]stacksize in kernel mode

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

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

commit b9b032af722d9812790b379590c1da154a8be748
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Thu Oct 20 03:10:23 2022 +0800

    sched/spawn: Support task_spawnattr_[set|get]stacksize in kernel mode
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
    Signed-off-by: chao an <an...@xiaomi.com>
---
 binfmt/binfmt_exec.c                   |  2 --
 include/spawn.h                        | 22 ++++++++--------------
 libs/libc/spawn/Make.defs              |  8 ++------
 libs/libc/spawn/lib_psa_getstacksize.c |  4 ----
 libs/libc/spawn/lib_psa_init.c         |  2 --
 libs/libc/spawn/lib_psa_setstacksize.c |  4 ----
 6 files changed, 10 insertions(+), 32 deletions(-)

diff --git a/binfmt/binfmt_exec.c b/binfmt/binfmt_exec.c
index 222a7de72b..dd51d7e53a 100644
--- a/binfmt/binfmt_exec.c
+++ b/binfmt/binfmt_exec.c
@@ -106,12 +106,10 @@ int exec_spawn(FAR const char *filename, FAR char * const *argv,
           bin->priority = attr->priority;
         }
 
-#ifndef CONFIG_BUILD_KERNEL
       if (attr->stacksize > 0)
         {
           bin->stacksize = attr->stacksize;
         }
-#endif
     }
 
   /* Disable pre-emption so that the executed module does
diff --git a/include/spawn.h b/include/spawn.h
index 6c12e29633..0a8ae8d0c0 100644
--- a/include/spawn.h
+++ b/include/spawn.h
@@ -87,12 +87,10 @@ struct posix_spawnattr_s
 #endif
 
   sigset_t sigmask;              /* Signals to be masked */
+  size_t stacksize;              /* Task stack size (non-standard) */
 
 #ifndef CONFIG_BUILD_KERNEL
-  /* Used only by task_spawn (non-standard) */
-
-  FAR void *stackaddr;           /* Task stack address */
-  size_t    stacksize;           /* Task stack size */
+  FAR void *stackaddr;           /* Task stack address (non-standard) */
 #endif
 
 #ifdef CONFIG_SCHED_SPORADIC
@@ -203,25 +201,21 @@ int posix_spawnattr_setschedpolicy(FAR posix_spawnattr_t *attr, int policy);
 int posix_spawnattr_setsigmask(FAR posix_spawnattr_t *attr,
                                FAR const sigset_t *sigmask);
 
-/* Non-standard get/set spawn attributes interfaces for use only with
- * task_spawn()
- */
+/* Non-standard get/set spawn attributes interfaces */
+
+int task_spawnattr_getstacksize(FAR const posix_spawnattr_t *attr,
+                                FAR size_t *stacksize);
+int task_spawnattr_setstacksize(FAR posix_spawnattr_t *attr,
+                                size_t stacksize);
 
 #ifndef CONFIG_BUILD_KERNEL
 int task_spawnattr_getstackaddr(FAR const posix_spawnattr_t *attr,
                                 FAR void **stackaddr);
 int task_spawnattr_setstackaddr(FAR posix_spawnattr_t *attr,
                                 FAR void *stackaddr);
-
-int task_spawnattr_getstacksize(FAR const posix_spawnattr_t *attr,
-                                FAR size_t *stacksize);
-int task_spawnattr_setstacksize(FAR posix_spawnattr_t *attr,
-                                size_t stacksize);
 #else
 #  define task_spawnattr_getstackaddr(attr, addr) (*(addr) = NULL, 0)
 #  define task_spawnattr_setstackaddr(attr, addr) (0)
-#  define task_spawnattr_getstacksize(attr, size) (*(size) = 0, 0)
-#  define task_spawnattr_setstacksize(attr, size) (0)
 #endif
 
 /* Non standard debug functions */
diff --git a/libs/libc/spawn/Make.defs b/libs/libc/spawn/Make.defs
index 42a2df84de..55538890d7 100644
--- a/libs/libc/spawn/Make.defs
+++ b/libs/libc/spawn/Make.defs
@@ -23,21 +23,17 @@
 CSRCS += lib_psfa_addaction.c lib_psfa_addclose.c lib_psfa_adddup2.c
 CSRCS += lib_psfa_addopen.c lib_psfa_destroy.c lib_psfa_init.c
 
-ifeq ($(CONFIG_DEBUG_FEATURES),y)
-CSRCS += lib_psfa_dump.c
-endif
-
 CSRCS += lib_psa_getflags.c lib_psa_getschedparam.c lib_psa_getschedpolicy.c
 CSRCS += lib_psa_init.c lib_psa_setflags.c lib_psa_setschedparam.c
 CSRCS += lib_psa_setschedpolicy.c lib_psa_getsigmask.c lib_psa_setsigmask.c
+CSRCS += lib_psa_getstackaddr.c lib_psa_setstackaddr.c
 
 ifneq ($(CONFIG_BUILD_KERNEL),y)
-CSRCS += lib_psa_getstackaddr.c lib_psa_setstackaddr.c
 CSRCS += lib_psa_getstacksize.c lib_psa_setstacksize.c
 endif
 
 ifeq ($(CONFIG_DEBUG_FEATURES),y)
-CSRCS += lib_psa_dump.c
+CSRCS += lib_psfa_dump.c lib_psa_dump.c
 endif
 
 # Add the spawn directory to the build
diff --git a/libs/libc/spawn/lib_psa_getstacksize.c b/libs/libc/spawn/lib_psa_getstacksize.c
index 748fb52fa2..83f5550bc8 100644
--- a/libs/libc/spawn/lib_psa_getstacksize.c
+++ b/libs/libc/spawn/lib_psa_getstacksize.c
@@ -28,8 +28,6 @@
 #include <spawn.h>
 #include <assert.h>
 
-#ifndef CONFIG_BUILD_KERNEL
-
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
@@ -59,5 +57,3 @@ int task_spawnattr_getstacksize(FAR const posix_spawnattr_t *attr,
   *stacksize = attr->stacksize;
   return OK;
 }
-
-#endif /* !CONFIG_BUILD_KERNEL */
diff --git a/libs/libc/spawn/lib_psa_init.c b/libs/libc/spawn/lib_psa_init.c
index 5bb112fbb2..c9fb53a5ce 100644
--- a/libs/libc/spawn/lib_psa_init.c
+++ b/libs/libc/spawn/lib_psa_init.c
@@ -98,11 +98,9 @@ int posix_spawnattr_init(posix_spawnattr_t *attr)
   attr->budget.tv_nsec      = param.sched_ss_init_budget.tv_nsec;
 #endif
 
-#ifndef CONFIG_ARCH_ADDRENV
   /* Default stack size */
 
   attr->stacksize           = CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE;
-#endif
 
   return OK;
 }
diff --git a/libs/libc/spawn/lib_psa_setstacksize.c b/libs/libc/spawn/lib_psa_setstacksize.c
index 6db71c6582..a6712a6871 100644
--- a/libs/libc/spawn/lib_psa_setstacksize.c
+++ b/libs/libc/spawn/lib_psa_setstacksize.c
@@ -28,8 +28,6 @@
 #include <spawn.h>
 #include <assert.h>
 
-#ifndef CONFIG_BUILD_KERNEL
-
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
@@ -59,5 +57,3 @@ int task_spawnattr_setstacksize(FAR posix_spawnattr_t *attr,
   attr->stacksize = stacksize;
   return OK;
 }
-
-#endif /* !CONFIG_BUILD_KERNEL */