2013-07-04 2 views
0

в STRUCT 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 *"

+0

'loff_t outoff; ssize_t readb = read (fp, buf, how_many и outoff); ' –

+0

спасибо, но я печатаю значение из драйвера и приходит как 0 printk (KERN_ALERT" Смещение:% lld \ n ", * offset); результат в "dmesg" его всегда 0 – eduardosufan

ответ

1

Чтобы получить ненулевое значение в параметре «loff_t *» с первым чтением из вашего приложения, вам нужно сначала назвать «lseek», я считаю.

как:

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

Здесь смещение будет передано ядру через 'loff_t * параметра'.

Смежные вопросы