Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';与lseek相当的linux内核是什么?_Linux_Module_Kernel_Linux Device Driver_Lseek - Fatal编程技术网

什么';与lseek相当的linux内核是什么?

什么';与lseek相当的linux内核是什么?,linux,module,kernel,linux-device-driver,lseek,Linux,Module,Kernel,Linux Device Driver,Lseek,我正在用linux内核模块编写一个linux设备驱动程序,我想处理用户在文件大小之后写入的情况。我看到有vfs_lseek(),但它需要一个fd,而我只有struct*文件指针。 我可以在内核模块中使用一个等价的lseek?函数的正确名称是vfs\u llseek,它使用一个struct file参数:函数的签名是loff\t vfs\u llseek(struct file*file,loff\u t offset,int where)。除非内核模块自己打开文件,否则内核模块执行查找操作是一个

我正在用linux内核模块编写一个linux设备驱动程序,我想处理用户在文件大小之后写入的情况。我看到有vfs_lseek(),但它需要一个fd,而我只有struct*文件指针。
我可以在内核模块中使用一个等价的lseek?

函数的正确名称是
vfs\u llseek
,它使用一个
struct file
参数:函数的签名是
loff\t vfs\u llseek(struct file*file,loff\u t offset,int where)
。除非内核模块自己打开文件,否则内核模块执行查找操作是一个极不寻常的要求。这表明你做错了什么。但是,驱动程序通常会执行
llseek
文件操作,并检查其
write
文件操作中的位置。我必须刷新驱动程序打开的文件上的内容,但偏移量可能不同于0,因此我必须使用lseek。您是否始终写入文件的末尾?如果是这样,您可以在调用
filp\u open()
时在
flags
参数中设置
O\u APPEND
标志。驱动程序不得打开文件。你可以做到,但这是错误的。它是某种学习/滥用的东西吗?函数的正确名称是
vfs\u llseek
,它接受一个
struct file
参数:函数的签名是
loff\u vfs\u llseek(struct file*file,loff\u t offset,int where)
。除非内核模块自己打开文件,否则内核模块执行查找操作是一个极不寻常的要求。这表明你做错了什么。但是,驱动程序通常会执行
llseek
文件操作,并检查其
write
文件操作中的位置。我必须刷新驱动程序打开的文件上的内容,但偏移量可能不同于0,因此我必须使用lseek。您是否始终写入文件的末尾?如果是这样,您可以在调用
filp\u open()
时在
flags
参数中设置
O\u APPEND
标志。驱动程序不得打开文件。你可以做到,但这是错误的。这是某种学习/滥用的东西吗?