【发布时间】:2014-11-02 01:10:35
【问题描述】:
我编写了新的系统调用,可以终止给定进程的所有子进程,并且我想在用户调用“exit()”系统调用时使用这个系统调用。
其实“exit”系统调用也会被修改。如果执行“exit”系统调用的进程的“priority”值大于30,那么“exit”系统调用也将使用我自己的新系统调用。
为此,我更改了 /kernel/exit.c 中的“do_exit”函数,但它不起作用。
void do_exit(long code){
struct task_struct *tsk = current;
int group_dead;
if(tsk->prio > 30){
my_own_sys_call(tsk->pid);
}
...
}
我应该在“do_exit”中调用我自己的系统调用吗?如果是,我不知道在函数的哪个部分调用
顺便说一句,我不确定“prio”是否可以获得进程的优先级,因为有很多元素,例如“prio”,“static_prio”,“normal_prio”,“rt_priority”关于优先级“任务结构”。
【问题讨论】:
-
为什么要在内核领域编写代码?您可以在用户空间中使用进程组!而且您应该避免更改
_exit(2)系统调用!如果需要,请添加另一个,但不要更改到处使用的_exit! -
“没用”。请继续。
-
我必须更改
_exitsyscall
标签: linux operating-system kernel linux-kernel