2010-02-25 1 views
0

Я видел некоторые примеры кода, который делает это:Скажите proc_entry-> write_proc, чтобы использовать ioctl с аргументом?

proc_entry->read_proc = module_read; 
proc_entry->write_proc = module_write; 

Однако в моем модуле, я использовал IOCTLs вместо чтения и записи. Вот мой IOCTL прототип функции:

int mytimer_ioctl(struct inode *inode, struct file *file, unsigned int fcn, unsigned long args) 

Для чтения, мой «кп» является IOCTL_GET_TIMER, и для записи, мой «кп» является IOCTL_SET_TIMER.

Во всяком случае, чтобы сделать что-то вроде этого:

proc_entry->read_proc = module_ioctl(IOCTL_GET_TIMER); 
proc_entry->write_proc = module_ioctl(IOCTL_SET_TIMER); 

Но не проходят в «арг» аргумент?

Или, может быть, проще всего написать функцию module_read и module_write, и вызовите ли они ioctl?

Спасибо за помощь, ребята!

ответ

1

Невозможно это сделать. Просто реализуйте функции пересылки.

+0

Спасибо, я буду работать над этим ... Тем не менее, я не уверен, как я могу переслать их больше, так как вызов ioctl требует * inode и * файлов входов тоже ... Что бы я сделал для этого? – hahuang65

+0

Чтение и запись вызовов берут «struct file * pfil», не так ли? Тогда я считаю, что это «filp-> f_dentry-> d_inode». –

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