sched/spawn: Launch nxposix_spawn_proxy through nxthread_create
to ensure the caller environment variable always get copied Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
aed85964ff
commit
9ccddde6a9
@ -297,6 +297,10 @@ extern volatile spinlock_t g_cpu_tasklistlock;
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
int nxthread_create(FAR const char *name, uint8_t ttype, int priority,
|
||||
FAR void *stack_ptr, int stack_size, main_t entry,
|
||||
FAR char * const argv[], FAR char * const envp[]);
|
||||
|
||||
/* Task list manipulation functions */
|
||||
|
||||
bool nxsched_add_readytorun(FAR struct tcb_s *rtrtcb);
|
||||
|
@ -39,7 +39,7 @@
|
||||
#include "task/task.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
@ -70,9 +70,9 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int nxthread_create(FAR const char *name, uint8_t ttype, int priority,
|
||||
FAR void *stack_ptr, int stack_size, main_t entry,
|
||||
FAR char * const argv[], FAR char * const envp[])
|
||||
int nxthread_create(FAR const char *name, uint8_t ttype, int priority,
|
||||
FAR void *stack_ptr, int stack_size, main_t entry,
|
||||
FAR char * const argv[], FAR char * const envp[])
|
||||
{
|
||||
FAR struct task_tcb_s *tcb;
|
||||
pid_t pid;
|
||||
@ -112,10 +112,6 @@ static int nxthread_create(FAR const char *name, uint8_t ttype, int priority,
|
||||
return (int)pid;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nxtask_create
|
||||
*
|
||||
|
@ -388,10 +388,10 @@ int posix_spawn(FAR pid_t *pid, FAR const char *path,
|
||||
* task.
|
||||
*/
|
||||
|
||||
proxy = kthread_create("nxposix_spawn_proxy", param.sched_priority,
|
||||
CONFIG_POSIX_SPAWN_PROXY_STACKSIZE,
|
||||
(main_t)nxposix_spawn_proxy,
|
||||
(FAR char * const *)NULL);
|
||||
proxy = nxthread_create("nxposix_spawn_proxy", TCB_FLAG_TTYPE_KERNEL,
|
||||
param.sched_priority, NULL,
|
||||
CONFIG_POSIX_SPAWN_PROXY_STACKSIZE,
|
||||
nxposix_spawn_proxy, NULL, environ);
|
||||
if (proxy < 0)
|
||||
{
|
||||
ret = -proxy;
|
||||
|
Loading…
Reference in New Issue
Block a user