我的系统调用无法正常工作

mel*_*lih 0 c linux kernel system-calls linux-kernel

我需要创建2个新的系统调用来设置并通过给定的pid从进程获取属性.我更改了task_struct,添加了int z_value(这是我需要设置/获取的)

我还设法为每个创建的进程设置默认的z_value(200).

当我运行get system call时,我可以看到默认的z_value正确.但是当我尝试设置z_value时没有任何反应.

没有编译错误,没有分段错误等.

这是我的系统调用.

#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/uaccess.h>

asmlinkage void sys_set_z_value ( int user_value , pid_t pid )
{


    rcu_read_lock();

    struct task_struct *p = find_task_by_vpid(pid);  

    p->z_value = user_value;

    rcu_read_unlock();
}
Run Code Online (Sandbox Code Playgroud)

R..*_*R.. 6

你的号召copy_from_user是没有意义的.没有涉及用户空间内存的指针.user_value是一个值,而不是一个指针.(如果你打算将它作为一个指针,你需要修复所涉及的类型,但看起来你将它int通过值传递给系统调用.)只需分配p->z_value = user_value;.