我正在尝试修改Minix 3中的schedule.c文件(/usr/src/minix/servers/sched/schedule.c(。对于每个用完它量的进程,我想看看系统时间过去了多少。所以我想在 do_noquantum(( 中添加以下行:
...
rmp = &schedproc[proc_nr_n];
minix_time_type curr_time = minix_function_to_get_curr_time();
minix_time_type time_passed = curr_time - last_time[proc_nr_n];
//last_time[NR_PROCS] is a global array
last_time[proc_nr_n] = curr_time;
do_something_with_this_knowledge(time_passed);
...
但我不知道正确的类型和功能。另外 - 也许还有另一种更好的方法可以做到这一点。
你可以在 MINIX 中使用 syslib.h 中的 sys_times(( 函数。它具有以下声明:
int sys_times(endpoint_t proc_ep, clock_t* user_time, clock_t* sys_time, clock_t* uptime, clock_t* boottime)
您向它提供流程的端点和指向您感兴趣的clock_t参数的指针,它会用正确的信息填充指针。