diff options
author | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-04-26 16:06:54 +0000 |
---|---|---|
committer | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-04-26 16:06:54 +0000 |
commit | 3e1b2867abde43dc1e2a55ccda473f4e5b12702b (patch) | |
tree | 908356c280d94150997cd79e8a7bb38667470cdf /nuttx/sched | |
parent | 305cf084d4c7b4bdbc4160b3ecaed1bdeb72471b (diff) | |
download | px4-firmware-3e1b2867abde43dc1e2a55ccda473f4e5b12702b.tar.gz px4-firmware-3e1b2867abde43dc1e2a55ccda473f4e5b12702b.tar.bz2 px4-firmware-3e1b2867abde43dc1e2a55ccda473f4e5b12702b.zip |
Fix instrumenation in task_delete(); fix prctl parameter order
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4659 7fd9a85b-ad96-42d3-883c-3090e2eb8679
Diffstat (limited to 'nuttx/sched')
-rw-r--r-- | nuttx/sched/prctl.c | 30 | ||||
-rw-r--r-- | nuttx/sched/task_delete.c | 2 |
2 files changed, 29 insertions, 3 deletions
diff --git a/nuttx/sched/prctl.c b/nuttx/sched/prctl.c index 93d69ee02..c4ed373b9 100644 --- a/nuttx/sched/prctl.c +++ b/nuttx/sched/prctl.c @@ -88,9 +88,29 @@ int prctl(int option, ...) case PR_GET_NAME: #if CONFIG_TASK_NAME_SIZE > 0 { - int pid = va_arg(ap, int); + /* Get the prctl arguments */ + char *name = va_arg(ap, char *); - FAR _TCB *tcb = sched_gettcb(pid); + int pid = va_arg(ap, int); + FAR _TCB *tcb; + + /* Get the TCB associated with the PID (handling the special case of + * pid==0 meaning "this thread" + */ + + if (!pid) + { + tcb = (FAR _TCB *)g_readytorun.head; + } + else + { + tcb = sched_gettcb(pid); + } + + /* An invalid pid be indicated by a NULL TCB returned from + * sched_gettcb() + */ + if (!tcb) { sdbg("Pid does not correspond to a task: %d\n", pid); @@ -105,12 +125,18 @@ int prctl(int option, ...) goto errout; } + /* Now get or set the name */ + if (option == PR_SET_NAME) { + /* tcb->name may not be null-terminated */ + strncpy(tcb->name, name, CONFIG_TASK_NAME_SIZE); } else { + /* The returned value will be null-terminated, truncating if necessary */ + strncpy(name, tcb->name, CONFIG_TASK_NAME_SIZE-1); name[CONFIG_TASK_NAME_SIZE-1]; } diff --git a/nuttx/sched/task_delete.c b/nuttx/sched/task_delete.c index 5448260d5..a77bf80dd 100644 --- a/nuttx/sched/task_delete.c +++ b/nuttx/sched/task_delete.c @@ -184,7 +184,7 @@ int task_delete(pid_t pid) * layer that the task no longer exists. */ - sched_note_stop(tcb); + sched_note_stop(dtcb); /* Deallocate its TCB */ |