insmod: ERROR: could not insert module my_module.ko: Unknown symbol in module

insmod: ERROR: could not insert module my_module.ko: Unknown symbol in module的解决办法


今天我做嵌入式驱动程序的作业的时候,写模块的read,write功能时,编写好程序后可以make编译,没有错,但hi是insmod装载模块的时候就报这个错。现在我把错误的原因和解决的结果放在下面。

1.前提概要:

   ###### 1.1.1设置描述字符设备的结构体:
insmod: ERROR: could not insert module my_module.ko: Unknown symbol in module
   ###### 1.1.2在init函数里初始化

2.错误的代码:

//read
ssize_t my_module_read(struct file *filp,char __user *buf,size_t count,loff_t *f_pos)
这个函数里出现了错误:因为没法识别cdev->rear=(cdev->front+*f_pos)%cdev->size;这一句话。
具体代码如下:
insmod: ERROR: could not insert module my_module.ko: Unknown symbol in module

3.错误原因:

由头函数可以看出loff_t *f_pos是一个loff_t类型的指针,但是其他的都是int格式,int=(int+loff_t)%int这是不行的。
但是int =int+loff_t是成立的的。

4.修正之后的代码:

insmod: ERROR: could not insert module my_module.ko: Unknown symbol in module