From d1f82ced264319bd4c3572df7b99e9955c6e3c88 Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Thu, 22 Oct 2020 16:45:59 +0900 Subject: [PATCH] Revert "sched: Call up_[use|create]_stack after nxtask_setup_scheduler" This reverts commit 6eba1ad90a3f49fc085e280d5e517a4656689732. --- sched/pthread/pthread_create.c | 42 +++++++++++++++++----------------- sched/task/task_init.c | 18 +++++++-------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/sched/pthread/pthread_create.c b/sched/pthread/pthread_create.c index c531d00b07..1b836f50a0 100644 --- a/sched/pthread/pthread_create.c +++ b/sched/pthread/pthread_create.c @@ -289,6 +289,27 @@ int pthread_create(FAR pthread_t *thread, FAR const pthread_attr_t *attr, pjoin->detached = true; } + if (attr->stackaddr) + { + /* Use pre-allocated stack */ + + ret = up_use_stack((FAR struct tcb_s *)ptcb, attr->stackaddr, + attr->stacksize); + } + else + { + /* Allocate the stack for the TCB */ + + ret = up_create_stack((FAR struct tcb_s *)ptcb, attr->stacksize, + TCB_FLAG_TTYPE_PTHREAD); + } + + if (ret != OK) + { + errcode = ENOMEM; + goto errout_with_join; + } + /* Should we use the priority and scheduler specified in the pthread * attributes? Or should we use the current thread's priority and * scheduler? @@ -410,27 +431,6 @@ int pthread_create(FAR pthread_t *thread, FAR const pthread_attr_t *attr, } #endif - if (attr->stackaddr) - { - /* Use pre-allocated stack */ - - ret = up_use_stack((FAR struct tcb_s *)ptcb, attr->stackaddr, - attr->stacksize); - } - else - { - /* Allocate the stack for the TCB */ - - ret = up_create_stack((FAR struct tcb_s *)ptcb, attr->stacksize, - TCB_FLAG_TTYPE_PTHREAD); - } - - if (ret != OK) - { - errcode = ENOMEM; - goto errout_with_join; - } - /* Configure the TCB for a pthread receiving on parameter * passed by value */ diff --git a/sched/task/task_init.c b/sched/task/task_init.c index 7d9904a0a0..b187b74ebe 100644 --- a/sched/task/task_init.c +++ b/sched/task/task_init.c @@ -108,15 +108,6 @@ int nxtask_init(FAR struct task_tcb_s *tcb, const char *name, int priority, goto errout_with_group; } - /* Initialize the task control block */ - - ret = nxtask_setup_scheduler(tcb, priority, nxtask_start, - entry, ttype); - if (ret < OK) - { - goto errout_with_group; - } - if (stack) { /* Use pre-allocated stack */ @@ -135,6 +126,15 @@ int nxtask_init(FAR struct task_tcb_s *tcb, const char *name, int priority, goto errout_with_group; } + /* Initialize the task control block */ + + ret = nxtask_setup_scheduler(tcb, priority, nxtask_start, + entry, ttype); + if (ret < OK) + { + goto errout_with_group; + } + /* Setup to pass parameters to the new task */ nxtask_setup_arguments(tcb, name, argv);