如何在exit()系统调用中调用自己的系统调用



我已经编写了一个新的系统调用,可以终止给定进程的所有子进程,并且我想在用户调用"exit()"系统调用时使用这个系统调用。

事实上,"退出"系统调用也将被修改。如果执行"退出"系统调用的进程的"优先级"值大于30,则"退出"的系统调用也将使用我自己的新系统调用。

为此,我更改了/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"是否能获得进程的优先级,因为在"task_struct"中有很多像"prio"、"static_prio"、"normal_prio"one_answers"rt_priority"这样的元素与优先级有关。

使用atexit。示例:

#include<stdio.h>
#include<stdlib.h>
void exit_func(void)
{
    printf("Inside %sn",__func__);
}
int main()
{
    atexit(exit_func);
    printf("Inside %sn",__func__);
}

最新更新