Changeset 07640dfd in mainline


Ignore:
Timestamp:
2010-03-29T16:21:29Z (14 years ago)
Author:
Stanislav Kozina <stanislav.kozina@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ea55bc4
Parents:
a2a00e8
Message:

Small changes on kernel & user accounting.

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/ps/taskinfo.h

    ra2a00e8 r07640dfd  
    5050        int thread_count;
    5151        uint64_t cycles;
     52        uint64_t ucycles;
     53        uint64_t kcycles;
    5254} task_info_t;
    5355
     
    7577        int priority;
    7678        uint64_t cycles;
     79        uint64_t ucycles;
     80        uint64_t kcycles;
    7781        unsigned int cpu;
    7882} thread_info_t;
  • kernel/generic/src/interrupt/interrupt.c

    ra2a00e8 r07640dfd  
    109109        if (THREAD && THREAD->interrupted && istate_from_uspace(istate))
    110110                thread_exit();
     111
     112        if (THREAD)
     113                thread_update_accounting(false);
    111114}
    112115
  • kernel/generic/src/proc/task.c

    ra2a00e8 r07640dfd  
    427427
    428428#ifdef __32_BITS__     
    429         printf("%-6" PRIu64 " %-12s %-3" PRIu32 " %10p %10p %9" PRIu64 "%c %9" PRIu64 "%c %9"
    430                 PRIu64 "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as, cycles, suffix,
     429        printf("%-6" PRIu64 " %-12s %-3" PRIu32 " %10p %10p %9" PRIu64 "%c %9"
     430                PRIu64 "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as,
    431431                ucycles, usuffix, kcycles, ksuffix, atomic_get(&t->refcount),
    432432                atomic_get(&t->active_calls));
     
    434434
    435435#ifdef __64_BITS__
    436         printf("%-6" PRIu64 " %-12s %-3" PRIu32 " %18p %18p %9" PRIu64 "%c %9" PRIu64 "%c %9"
    437                 PRIu64 "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as, cycles, suffix,
     436        printf("%-6" PRIu64 " %-12s %-3" PRIu32 " %18p %18p %9" PRIu64 "%c %9"
     437                PRIu64 "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as,
    438438                ucycles, usuffix, kcycles, ksuffix, atomic_get(&t->refcount),
    439439                atomic_get(&t->active_calls));
     
    461461#ifdef __32_BITS__     
    462462        printf("taskid name         ctx address    as        "
    463             " cycles     ucycles    kcycles    threads calls  callee\n");
     463            " ucycles    kcycles    threads calls  callee\n");
    464464        printf("------ ------------ --- ---------- ----------"
    465             " ---------- ---------- ---------- ------- ------ ------>\n");
     465            " ---------- ---------- ------- ------ ------>\n");
    466466#endif
    467467
    468468#ifdef __64_BITS__
    469469        printf("taskid name         ctx address            as                "
    470             " cycles     ucycles    kcycles    threads calls  callee\n");
     470            " ucycles    kcycles    threads calls  callee\n");
    471471        printf("------ ------------ --- ------------------ ------------------"
    472             " ---------- ---------- ---------- ---------- ------- ------ ------>\n");
     472            " ---------- ---------- ---------- ------- ------ ------>\n");
    473473#endif
    474474
  • kernel/generic/src/proc/thread.c

    ra2a00e8 r07640dfd  
    630630
    631631#ifdef __32_BITS__
    632         printf("%-6" PRIu64" %-10s %10p %-8s %10p %-3" PRIu32 " %10p %10p %9" PRIu64 "%c %9" PRIu64 "%c %9" PRIu64 "%c ",
    633             t->tid, t->name, t, thread_states[t->state], t->task,
    634         t->task->context, t->thread_code, t->kstack, cycles, suffix, ucycles, usuffix, kcycles, ksuffix);
     632        printf("%-6" PRIu64" %-10s %10p %-8s %10p %-3" PRIu32 " %10p %10p %9"
     633                PRIu64 "%c %9" PRIu64 "%c ", t->tid, t->name, t,
     634                thread_states[t->state], t->task, t->task->context, t->thread_code,
     635                t->kstack, ucycles, usuffix, kcycles, ksuffix);
    635636#endif
    636637
    637638#ifdef __64_BITS__
    638         printf("%-6" PRIu64" %-10s %18p %-8s %18p %-3" PRIu32 " %18p %18p %9" PRIu64 "%c %9" PRIu64 "%c %9" PRIu64 "%c ",
    639             t->tid, t->name, t, thread_states[t->state], t->task,
    640         t->task->context, t->thread_code, t->kstack, cycles, suffix, ucycles, usuffix, kcycles, ksuffix);
     639        printf("%-6" PRIu64" %-10s %18p %-8s %18p %-3" PRIu32 " %18p %18p %9"
     640                PRIu64 "%c %9" PRIu64 "%c ", t->tid, t->name, t,
     641                thread_states[t->state], t->task, t->task->context, t->thread_code,
     642                t->kstack, ucycles, usuffix, kcycles, ksuffix);
    641643#endif
    642644                       
     
    672674#ifdef __32_BITS__     
    673675        printf("tid    name       address    state    task       "
    674                 "ctx code       stack      cycles     ucycles    kcycles    cpu  "
     676                "ctx code       stack      ucycles    kcycles    cpu  "
    675677                "waitqueue\n");
    676678        printf("------ ---------- ---------- -------- ---------- "
    677                 "--- ---------- ---------- ---------- ---------- ---------- ---- "
     679                "--- ---------- ---------- ---------- ---------- ---- "
    678680                "----------\n");
    679681#endif
     
    681683#ifdef __64_BITS__
    682684        printf("tid    name       address            state    task               "
    683                 "ctx code               stack              cycles     ucycles    kcycles    cpu  "
     685                "ctx code               stack              ucycles    kcycles    cpu  "
    684686                "waitqueue\n");
    685687        printf("------ ---------- ------------------ -------- ------------------ "
    686                 "--- ------------------ ------------------ ---------- ---------- ---------- ---- "
     688                "--- ------------------ ------------------ ---------- ---------- ---- "
    687689                "------------------\n");
    688690#endif
  • kernel/generic/src/ps/ps.c

    ra2a00e8 r07640dfd  
    136136        uint64_t cycles = task_get_accounting(t, &ucycles, &kcycles);
    137137        copy_to_uspace(&uspace_info->cycles, &cycles, sizeof(cycles));
     138        copy_to_uspace(&uspace_info->ucycles, &ucycles, sizeof(cycles));
     139        copy_to_uspace(&uspace_info->kcycles, &kcycles, sizeof(cycles));
    138140
    139141        size_t pages = get_pages_count(t->as);
     
    171173        result.priority = t->priority;
    172174        result.cycles = t->cycles;
     175        result.ucycles = t->ucycles;
     176        result.kcycles = t->kcycles;
    173177
    174178        if (t->cpu)
  • kernel/generic/src/syscall/syscall.c

    ra2a00e8 r07640dfd  
    6262        unative_t rc;
    6363
     64        /* Do userpace accounting */
     65        thread_update_accounting(true);
     66
    6467#ifdef CONFIG_UDEBUG
    6568        /*
     
    9699        }
    97100#endif
     101
     102        /* Do kernel accounting */
     103        thread_update_accounting(false);
    98104       
    99105        return rc;
  • uspace/app/ps/ps.c

    ra2a00e8 r07640dfd  
    7070        }
    7171
    72         printf("      ID  Threads    Pages    [k]Cycles Name\n");
     72        printf("      ID  Threads    Pages   [k]uCycles   [k]kCycles  Cycle fault Name\n");
    7373
    7474        int i;
     
    7676                task_info_t taskinfo;
    7777                get_task_info(tasks[i], &taskinfo);
    78                 printf("%8llu %8u %8u %12llu %s\n", tasks[i], taskinfo.thread_count,
    79                                 taskinfo.pages, taskinfo.cycles / 1000, taskinfo.name);
     78                printf("%8llu %8u %8u %12llu %12llu %12llu %s\n", tasks[i],
     79                                taskinfo.thread_count, taskinfo.pages, taskinfo.ucycles / 1000,
     80                                taskinfo.kcycles / 1000, (taskinfo.ucycles + taskinfo.kcycles) -
     81                                taskinfo.cycles, taskinfo.name);
    8082        }
    8183}
     
    99101
    100102        int i;
    101         printf("    ID    State  CPU   Prio    [k]Cycles\n");
     103        printf("    ID    State  CPU   Prio   [k]uCycles   [k]kcycles  Cycle fault\n");
    102104        for (i = 0; i < result; ++i) {
    103                 printf("%6llu %-8s %4u %6d %12llu\n", threads[i].tid, thread_states[threads[i].state],
    104                                 threads[i].cpu, threads[i].priority, threads[i].cycles / 1000);
     105                printf("%6llu %-8s %4u %6d %12llu %12llu %12llu\n", threads[i].tid,
     106                        thread_states[threads[i].state], threads[i].cpu,
     107                        threads[i].priority, threads[i].ucycles / 1000,
     108                        threads[i].kcycles / 1000,
     109                        threads[i].ucycles + threads[i].kcycles - threads[i].cycles);
    105110        }
    106111}
Note: See TracChangeset for help on using the changeset viewer.