什么';与lseek相当的linux内核是什么?
我正在用linux内核模块编写一个linux设备驱动程序,我想处理用户在文件大小之后写入的情况。我看到有vfs_lseek(),但它需要一个fd,而我只有struct*文件指针。什么';与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)。除非内核模块自己打开文件,否则内核模块执行查找操作是一个
我可以在内核模块中使用一个等价的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
标志。驱动程序不得打开文件。你可以做到,但这是错误的。这是某种学习/滥用的东西吗?