Я видел некоторые примеры кода, который делает это:Скажите 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?
Спасибо за помощь, ребята!
Спасибо, я буду работать над этим ... Тем не менее, я не уверен, как я могу переслать их больше, так как вызов ioctl требует * inode и * файлов входов тоже ... Что бы я сделал для этого? – hahuang65
Чтение и запись вызовов берут «struct file * pfil», не так ли? Тогда я считаю, что это «filp-> f_dentry-> d_inode». –