无法从模块访问内核函数符号sys_epoll_create1

时间:2015-12-17 07:13:30

标签: kernel linux-device-driver system-calls epoll

我正在编写驱动程序作为模块。我必须从模块调用系统调用sys_epoll_create1()。我写了一个这样的模块:

#include <linux/init.h> 
#include <linux/module.h> 
#include <linux/kernel.h> 
#include <linux/net.h> 
#include <linux/syscalls.h> 
#include <linux/eventpoll.h> 
#include <net/sock.h> 
MODULE_LICENSE("GPL"); 
static int hello_init(void) 
{ 
    sys_epoll_create1(1); 
    return 0; 
} 

static void hello_exit(void) 
{ 

} 

module_init(hello_init); 
module_exit(hello_exit); 

编译日志显示如下:

~/test $ make 
make -C /lib/modules/4.2.0-16-generic/build M=/home/kyl/test modules 
make[1]: Entering directory '/usr/src/linux-headers-4.2.0-16-generic' 
CC [M]  /home/kyl/test/hello.o 
Building modules, stage 2. 
MODPOST 1 modules 
WARNING: "sys_epoll_create1" [/home/kyl/test/hello.ko] undefined! 
CC      /home/kyl/test/hello.mod.o 
LD [M]  /home/kyl/test/hello.ko 
make[1]: Leaving directory '/usr/src/linux-headers-4.2.0-16-generic' 

在我查看时,sys_epoll_create1()

中有linux/syscalls.h声明
asmlinkage long sys_epoll_create1(int flags);

我已将<linux/syscalls.h>作为头文件,为什么gcc仍显示WARNING: "sys_epoll_create1" [/home/kyl/test/hello.ko] undefined!

0 个答案:

没有答案