From f70981c1797a2ba0389849441c196be7b64db611 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Sun, 7 Jun 2020 04:31:20 +0800 Subject: [PATCH] sched: Make task_delete(getpid()) equal exit(EXIT_SUCCESS) Signed-off-by: Xiang Xiao Change-Id: I63b2a372ccf0e9ac4e6a7fc9b1b160d71eeeb40f --- sched/task/task_delete.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/sched/task/task_delete.c b/sched/task/task_delete.c index e212386a30308..8a6fe5b8fd167 100644 --- a/sched/task/task_delete.c +++ b/sched/task/task_delete.c @@ -132,6 +132,17 @@ int task_delete(pid_t pid) goto errout; } + /* Check if the task to delete is the calling task */ + + if (pid == rtcb->pid) + { + /* If it is, then what we really wanted to do was exit. Note that we + * don't bother to unlock the TCB since it will be going away. + */ + + exit(EXIT_SUCCESS); + } + /* Check to see if this task has the non-cancelable bit set in its * flags. Suppress context changes for a bit so that the flags are stable. * (the flags should not change in interrupt handling). @@ -183,17 +194,7 @@ int task_delete(pid_t pid) } #endif - /* Check if the task to delete is the calling task */ - sched_unlock(); - if (pid == rtcb->pid) - { - /* If it is, then what we really wanted to do was exit. Note that we - * don't bother to unlock the TCB since it will be going away. - */ - - exit(EXIT_SUCCESS); - } /* Otherwise, perform the asynchronous cancellation, letting * nxtask_terminate() do all of the heavy lifting.