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

时间:2014-11-02 01:10:35

标签: linux operating-system kernel linux-kernel

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

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

要做到这一点,我已经改变了" do_exit" /kernel/exit.c中的函数,但它没有工作。

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"关于" task_struct"。

中的优先级

1 个答案:

答案 0 :(得分:3)

使用atexit。 例如:

#include<stdio.h>
#include<stdlib.h>

void exit_func(void)
{
    printf("Inside %s\n",__func__);
}

int main()
{
    atexit(exit_func);
    printf("Inside %s\n",__func__);
}