使用Linux字符设备驱动程序的“write”函数中的一个参数

使用Linux字符设备驱动程序的“write”函数中的一个参数,linux,linux-kernel,linux-device-driver,kernel-module,Linux,Linux Kernel,Linux Device Driver,Kernel Module,我是一名试图学习Linux字符设备驱动程序的学生。我一直在遵循经过一些修改后编写的教程。读写系统只调用该驱动程序在字符缓冲区上读写。问题是,在我看来,参数loff_t*off的值在被认为不应该这样做的时候发生了变化。我的意思是,如果你看到下一段代码 静态ssize_t my_writestruct file*f,const char __user*buf, 尺寸透镜,loff{ int i; 字符字节; printkKERN_信息驱动程序:写入\n; printkKERN_INFO 1.*off

我是一名试图学习Linux字符设备驱动程序的学生。我一直在遵循经过一些修改后编写的教程。读写系统只调用该驱动程序在字符缓冲区上读写。问题是,在我看来,参数loff_t*off的值在被认为不应该这样做的时候发生了变化。我的意思是,如果你看到下一段代码

静态ssize_t my_writestruct file*f,const char __user*buf, 尺寸透镜,loff{ int i; 字符字节; printkKERN_信息驱动程序:写入\n; printkKERN_INFO 1.*off的值为:%i\n,*off; 如果*off>=缓冲区大小-1{ 返回0; } printkKERN_INFO 2.*off的值为:%i\n,*off; 如果*off+len>缓冲区大小-1{ len=缓冲区大小-1-*关闭; } printkKERN_INFO 3.*off的值为:%i\n,*off; 对于i=0;i *off的值为:0 *off的值为:-1 *off的值为:0 *off的值为:693260 *off的值为:-2132049164
你能告诉我为什么吗?谢谢。

来自第3章:LDD中的字符驱动程序

off是指向“长偏移类型”对象的指针,该对象指示用户正在访问的文件位置

无论方法传输多少数据,它们通常都应该更新 *offp处的文件位置,表示成功完成后的当前文件位置 系统调用的一部分

有关更多信息,请参阅

中的图3-2,该链接可以帮助您。