如何正确调用文件操作的读取功能?

时间:2013-07-04 20:15:43

标签: c linux-kernel kernel linux-device-driver device-driver

结构file_operations中的

,它在第1517行中定义:

http://lxr.free-electrons.com/source/include/linux/fs.h?a=arm

第1520行中有方法来读取操作:

  ssize_t (* read) (struct file *, char __ user *, size_t, loff_t *);

这是从应用程序调用此方法的正确方法吗? 我在将"loff_t *"

作为参数传递时遇到问题

1 个答案:

答案 0 :(得分:1)

在" loff_t *"中获得非零值从您的应用程序中首次读取的参数,您需要调用' lseek'首先,我相信。

像:

#include <unistd.h>
...
offset = ...
pos = lseek(fh, (off_t) offset, SEEK_SET);
read(fh, buffer, bytesToRead);

这里的偏移量将通过&#39; loff_t *参数&#39;传递给内核。