从多个进程调用系统调用

时间:2014-10-18 14:48:25

标签: c linux-kernel operating-system kernel

我在Linux中实现了一个新的系统调用:

void do_test(unsigned char *input, unsigned char *output){
    unsigned char *pt;     
    // do something complex with pt; 
}

do_test系统调用由Linux中运行的许多进程调用。

我是否应该担心共享变量*pt具有竞争条件的多个进程(即它处于不一致状态)?或者这是每个进程都有自己的内核代码版本的情况,因此进程A中使用的*pt与进程B中的进程不同?

如果有竞争条件,我应该如何锁定它?

1 个答案:

答案 0 :(得分:0)

unsigned char *pt;是一个局部变量,它不被共享,因为每个进程都有自己的系统调用堆栈。它们共享相同的代码,但它运行在不同的堆栈上。

所以不,如果你坚持局部变量,你就不需要任何锁定,也不会冒任何数据竞争的风险。