プロセス ID が既にわかっているユーザー プロセスの task_struct にアクセスできるカーネル モジュールを実装しようとしています。私はプロセスの task_struct を取得するためにfind_get_pid
andを使用しています:pid_task
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/pid.h>
#include <linux/pid_namespace.h>
int init_module( void )
{
//Declaring the variables
int p_id = 6980; //6980 is the process ID of my user process
struct pid *pid_struct;
struct task_struct *task;
// Trying to access the variables of the p_id
pid_struct = find_get_pid(p_id);
task = pid_task(pid_struct, PIDTYPE_PID);
//Printing the info from the task_struct
printk( KERN_INFO "*** [%d]\n",task->pid);
return 0;
}
void cleanup_module( void )
{
return;
}
正常にコンパイルされ、*.ko ファイルを取得していますが、カーネルに挿入しようとすると、エラーが発生します:
insmod: error inserting 'main.ko': -1 Unknown symbol in module
Dmesg から次の出力が返され
main: Unknown symbol find_get_pid (err 0)
ます:誰かが私を助けることができれば本当に感謝しています。