mirror of
https://github.com/apache/nuttx.git
synced 2026-05-23 14:58:13 +08:00
Revert "sched: Call up_[use|create]_stack after nxtask_setup_scheduler"
This reverts commit 6eba1ad90a.
This commit is contained in:
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user