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)
你的号召copy_from_user是没有意义的.没有涉及用户空间内存的指针.user_value是一个值,而不是一个指针.(如果你打算将它作为一个指针,你需要修复所涉及的类型,但看起来你将它int通过值传递给系统调用.)只需分配p->z_value = user_value;.
| 归档时间: |
|
| 查看次数: |
1101 次 |
| 最近记录: |