Changeset 2b96463 in mainline for kernel/generic/src/proc/task.c
- Timestamp:
- 2011-01-28T15:15:11Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3ee48f2, 7a51d75
- Parents:
- ef8d655 (diff), ae0300b5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/proc/task.c
ref8d655 r2b96463 342 342 sysarg_t sys_task_set_name(const char *uspace_name, size_t name_len) 343 343 { 344 int rc;345 344 char namebuf[TASK_NAME_BUFLEN]; 346 345 347 346 /* Cap length of name and copy it from userspace. */ 348 349 347 if (name_len > TASK_NAME_BUFLEN - 1) 350 348 name_len = TASK_NAME_BUFLEN - 1; 351 349 352 rc = copy_from_uspace(namebuf, uspace_name, name_len);350 int rc = copy_from_uspace(namebuf, uspace_name, name_len); 353 351 if (rc != 0) 354 352 return (sysarg_t) rc; 355 353 356 354 namebuf[name_len] = '\0'; 355 356 /* 357 * As the task name is referenced also from the 358 * threads, lock the threads' lock for the course 359 * of the update. 360 */ 361 362 irq_spinlock_lock(&tasks_lock, true); 363 irq_spinlock_lock(&TASK->lock, false); 364 irq_spinlock_lock(&threads_lock, false); 365 366 /* Set task name */ 357 367 str_cpy(TASK->name, TASK_NAME_BUFLEN, namebuf); 368 369 irq_spinlock_unlock(&threads_lock, false); 370 irq_spinlock_unlock(&TASK->lock, false); 371 irq_spinlock_unlock(&tasks_lock, true); 358 372 359 373 return EOK; … … 449 463 static void task_kill_internal(task_t *task) 450 464 { 465 irq_spinlock_lock(&task->lock, false); 466 irq_spinlock_lock(&threads_lock, false); 467 468 /* 469 * Interrupt all threads. 470 */ 471 451 472 link_t *cur; 452 453 /*454 * Interrupt all threads.455 */456 irq_spinlock_lock(&task->lock, false);457 473 for (cur = task->th_head.next; cur != &task->th_head; cur = cur->next) { 458 474 thread_t *thread = list_get_instance(cur, thread_t, th_link); … … 471 487 } 472 488 489 irq_spinlock_unlock(&threads_lock, false); 473 490 irq_spinlock_unlock(&task->lock, false); 474 491 }
Note:
See TracChangeset
for help on using the changeset viewer.