Rev 4343 | Rev 4345 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4343 | Rev 4344 | ||
|---|---|---|---|
| Line 247... | Line 247... | ||
| 247 | */ |
247 | */ |
| 248 | return (unative_t) copy_to_uspace(uspace_task_id, &TASK->taskid, |
248 | return (unative_t) copy_to_uspace(uspace_task_id, &TASK->taskid, |
| 249 | sizeof(TASK->taskid)); |
249 | sizeof(TASK->taskid)); |
| 250 | } |
250 | } |
| 251 | 251 | ||
| - | 252 | /** Syscall for setting the task name. |
|
| - | 253 | * |
|
| - | 254 | * The name simplifies identifying the task in the task list. |
|
| - | 255 | * |
|
| - | 256 | * @param name The new name for the task. (typically the same |
|
| - | 257 | * as the command used to execute it). |
|
| - | 258 | * |
|
| - | 259 | * @return 0 on success or an error code from @ref errno.h. |
|
| - | 260 | */ |
|
| - | 261 | unative_t sys_task_set_name(const char *uspace_name, size_t name_len) |
|
| - | 262 | { |
|
| - | 263 | int rc; |
|
| - | 264 | char namebuf[TASK_NAME_BUFLEN]; |
|
| - | 265 | ||
| - | 266 | /* Cap length of name and copy it from userspace. */ |
|
| - | 267 | ||
| - | 268 | if (name_len > TASK_NAME_BUFLEN - 1) |
|
| - | 269 | name_len = TASK_NAME_BUFLEN - 1; |
|
| - | 270 | ||
| - | 271 | rc = copy_from_uspace(namebuf, uspace_name, name_len); |
|
| - | 272 | if (rc != 0) |
|
| - | 273 | return (unative_t) rc; |
|
| - | 274 | ||
| - | 275 | namebuf[name_len] = '\0'; |
|
| - | 276 | strcpy(TASK->name, namebuf); |
|
| - | 277 | ||
| - | 278 | return EOK; |
|
| - | 279 | } |
|
| - | 280 | ||
| 252 | /** Find task structure corresponding to task ID. |
281 | /** Find task structure corresponding to task ID. |
| 253 | * |
282 | * |
| 254 | * The tasks_lock must be already held by the caller of this function and |
283 | * The tasks_lock must be already held by the caller of this function and |
| 255 | * interrupts must be disabled. |
284 | * interrupts must be disabled. |
| 256 | * |
285 | * |
| Line 365... | Line 394... | ||
| 365 | uint64_t cycles; |
394 | uint64_t cycles; |
| 366 | char suffix; |
395 | char suffix; |
| 367 | order(task_get_accounting(t), &cycles, &suffix); |
396 | order(task_get_accounting(t), &cycles, &suffix); |
| 368 | 397 | ||
| 369 | #ifdef __32_BITS__ |
398 | #ifdef __32_BITS__ |
| 370 | printf("%-6" PRIu64 " %-10s %-3" PRIu32 " %10p %10p %9" PRIu64 |
399 | printf("%-6" PRIu64 " %-12s %-3" PRIu32 " %10p %10p %9" PRIu64 |
| 371 | "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as, cycles, |
400 | "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as, cycles, |
| 372 | suffix, atomic_get(&t->refcount), atomic_get(&t->active_calls)); |
401 | suffix, atomic_get(&t->refcount), atomic_get(&t->active_calls)); |
| 373 | #endif |
402 | #endif |
| 374 | 403 | ||
| 375 | #ifdef __64_BITS__ |
404 | #ifdef __64_BITS__ |
| 376 | printf("%-6" PRIu64 " %-10s %-3" PRIu32 " %18p %18p %9" PRIu64 |
405 | printf("%-6" PRIu64 " %-12s %-3" PRIu32 " %18p %18p %9" PRIu64 |
| 377 | "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as, cycles, |
406 | "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as, cycles, |
| 378 | suffix, atomic_get(&t->refcount), atomic_get(&t->active_calls)); |
407 | suffix, atomic_get(&t->refcount), atomic_get(&t->active_calls)); |
| 379 | #endif |
408 | #endif |
| 380 | 409 | ||
| 381 | for (j = 0; j < IPC_MAX_PHONES; j++) { |
410 | for (j = 0; j < IPC_MAX_PHONES; j++) { |
| Line 396... | Line 425... | ||
| 396 | /* Messing with task structures, avoid deadlock */ |
425 | /* Messing with task structures, avoid deadlock */ |
| 397 | ipl = interrupts_disable(); |
426 | ipl = interrupts_disable(); |
| 398 | spinlock_lock(&tasks_lock); |
427 | spinlock_lock(&tasks_lock); |
| 399 | 428 | ||
| 400 | #ifdef __32_BITS__ |
429 | #ifdef __32_BITS__ |
| 401 | printf("taskid name ctx address as " |
430 | printf("taskid name ctx address as " |
| 402 | "cycles threads calls callee\n"); |
431 | "cycles threads calls callee\n"); |
| 403 | printf("------ ---------- --- ---------- ---------- " |
432 | printf("------ ------------ --- ---------- ---------- " |
| 404 | "---------- ------- ------ ------>\n"); |
433 | "---------- ------- ------ ------>\n"); |
| 405 | #endif |
434 | #endif |
| 406 | 435 | ||
| 407 | #ifdef __64_BITS__ |
436 | #ifdef __64_BITS__ |
| 408 | printf("taskid name ctx address as " |
437 | printf("taskid name ctx address as " |
| 409 | "cycles threads calls callee\n"); |
438 | "cycles threads calls callee\n"); |
| 410 | printf("------ ---------- --- ------------------ ------------------ " |
439 | printf("------ ------------ --- ------------------ ------------------ " |
| 411 | "---------- ------- ------ ------>\n"); |
440 | "---------- ------- ------ ------>\n"); |
| 412 | #endif |
441 | #endif |
| 413 | 442 | ||
| 414 | avltree_walk(&tasks_tree, task_print_walker, NULL); |
443 | avltree_walk(&tasks_tree, task_print_walker, NULL); |
| 415 | 444 | ||