Changeset 357b5f5 in mainline for kernel/generic/src/proc/task.c


Ignore:
Timestamp:
2011-01-23T20:09:13Z (13 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
fdb9982c
Parents:
cead2aa (diff), 7e36c8d (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.
Message:

Merge mainline changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/proc/task.c

    rcead2aa r357b5f5  
    151151        atomic_set(&task->refcount, 0);
    152152        atomic_set(&task->lifecount, 0);
    153         atomic_set(&task->active_calls, 0);
    154153       
    155154        irq_spinlock_initialize(&task->lock, "task_t_lock");
     
    291290}
    292291
    293 /** Syscall for reading task ID from userspace.
    294  *
    295  * @param uspace_task_id Userspace address of 8-byte buffer
    296  *                       where to store current task ID.
     292#ifdef __32_BITS__
     293
     294/** Syscall for reading task ID from userspace (32 bits)
     295 *
     296 * @param uspace_taskid Pointer to user-space buffer
     297 *                      where to store current task ID.
    297298 *
    298299 * @return Zero on success or an error code from @ref errno.h.
    299300 *
    300301 */
    301 unative_t sys_task_get_id(task_id_t *uspace_task_id)
     302sysarg_t sys_task_get_id(sysarg64_t *uspace_taskid)
    302303{
    303304        /*
     
    305306         * the lifespan of the task.
    306307         */
    307         return (unative_t) copy_to_uspace(uspace_task_id, &TASK->taskid,
     308        return (sysarg_t) copy_to_uspace(uspace_taskid, &TASK->taskid,
    308309            sizeof(TASK->taskid));
    309310}
     311
     312#endif  /* __32_BITS__ */
     313
     314#ifdef __64_BITS__
     315
     316/** Syscall for reading task ID from userspace (64 bits)
     317 *
     318 * @return Current task ID.
     319 *
     320 */
     321sysarg_t sys_task_get_id(void)
     322{
     323        /*
     324         * No need to acquire lock on TASK because taskid remains constant for
     325         * the lifespan of the task.
     326         */
     327        return TASK->taskid;
     328}
     329
     330#endif  /* __64_BITS__ */
    310331
    311332/** Syscall for setting the task name.
     
    319340 *
    320341 */
    321 unative_t sys_task_set_name(const char *uspace_name, size_t name_len)
     342sysarg_t sys_task_set_name(const char *uspace_name, size_t name_len)
    322343{
    323344        int rc;
     
    331352        rc = copy_from_uspace(namebuf, uspace_name, name_len);
    332353        if (rc != 0)
    333                 return (unative_t) rc;
     354                return (sysarg_t) rc;
    334355       
    335356        namebuf[name_len] = '\0';
     
    337358       
    338359        return EOK;
     360}
     361
     362/** Syscall to forcefully terminate a task
     363 *
     364 * @param uspace_taskid Pointer to task ID in user space.
     365 *
     366 * @return 0 on success or an error code from @ref errno.h.
     367 *
     368 */
     369sysarg_t sys_task_kill(task_id_t *uspace_taskid)
     370{
     371        task_id_t taskid;
     372        int rc;
     373
     374        rc = copy_from_uspace(&taskid, uspace_taskid, sizeof(taskid));
     375        if (rc != 0)
     376                return (sysarg_t) rc;
     377
     378        return (sysarg_t) task_kill(taskid);
    339379}
    340380
     
    478518#ifdef __32_BITS__
    479519        if (*additional)
    480                 printf("%-8" PRIu64 " %9" PRIua " %7" PRIua, task->taskid,
    481                     atomic_get(&task->refcount), atomic_get(&task->active_calls));
     520                printf("%-8" PRIu64 " %9" PRIua, task->taskid,
     521                    atomic_get(&task->refcount));
    482522        else
    483523                printf("%-8" PRIu64 " %-14s %-5" PRIu32 " %10p %10p"
     
    490530        if (*additional)
    491531                printf("%-8" PRIu64 " %9" PRIu64 "%c %9" PRIu64 "%c "
    492                     "%9" PRIua " %7" PRIua,
    493                     task->taskid, ucycles, usuffix, kcycles, ksuffix,
    494                     atomic_get(&task->refcount), atomic_get(&task->active_calls));
     532                    "%9" PRIua, task->taskid, ucycles, usuffix, kcycles,
     533                    ksuffix, atomic_get(&task->refcount));
    495534        else
    496535                printf("%-8" PRIu64 " %-14s %-5" PRIu32 " %18p %18p\n",
Note: See TracChangeset for help on using the changeset viewer.