max*_*max 1 kernel system-calls linux-kernel
我是Linux内核开发的新手.我在linux内核2.6中实现了一个系统调用my_pid.我想从系统调用中调用getpid系统调用.我该怎么做?
我想要的东西:
pid_t my_pid(){return getpid(); }
同样来自用户空间中的C我可以使用以下命令调用任何系统调用:syscall(); 在内核模式下执行此操作的一般方法是什么?
还有就是做这个的没有通用的方法.
如果您在内核空间中,则应调用直接实现系统调用功能的内核函数,而不是使用syscall
-type指令,或使用其他方法提取所需信息/影响所需操作.
对于具体情况getpid()
,您可以简单地使用current->pid
.
内核名称current
始终是指向当前的指针task_struct
,通过<linux/sched.h>
(搜索struct task_struct
)定义.访问其成员的代码通常会被内联,即当代码作为内核的一部分运行时,甚至不需要函数调用(更不用说系统调用).