summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-04-26 16:06:54 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-04-26 16:06:54 +0000
commit9b80f0e22e3304c3389df7175628f2890f8ee827 (patch)
tree908356c280d94150997cd79e8a7bb38667470cdf /nuttx
parentb1236cf9e33dc521db487911b38d5441a220d7ba (diff)
downloadpx4-nuttx-9b80f0e22e3304c3389df7175628f2890f8ee827.tar.gz
px4-nuttx-9b80f0e22e3304c3389df7175628f2890f8ee827.tar.bz2
px4-nuttx-9b80f0e22e3304c3389df7175628f2890f8ee827.zip
Fix instrumenation in task_delete(); fix prctl parameter order
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4659 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/sched/prctl.c30
-rw-r--r--nuttx/sched/task_delete.c2
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 */