我正在移植为Linux 2.4编写的linux内核模块,以便与Linux 2.6一起使用.在代码中使用了一些通过syscallN()宏声明并包含在set_fs()调用中的系统调用.如何在Linux 2.6中仍然使用那些不存在这些宏的sycall?
我知道从内核空间使用系统调用是很糟糕的,并且syscallN()在大多数平台上都会破坏宏.任何合理的方式来代替getuid,geteuid,mknod,chown,unlink,sched_yield在内核空间系统调用表示赞赏.
这是我的内核模块中的函数,我在后面的阶段使用insmod命令插入make.我正在努力 goldfish (2.6.29)
asmlinkage long our_sys_read(unsigned int fd, char *buf, size_t count)
{
printk("------->> our_sys_read getuid() ---------- %d\n", getuid());
return original_call_read(fd,buf,count);
}
Run Code Online (Sandbox Code Playgroud)
我想捕获系统调用并找出哪些用户进行了这些系统调用.但是当我运行'make'时,它会抛出我的错误.
/home/mohsin/LKM/trapcall.c:245: error: implicit declaration of function 'getuid'
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激.