Я реализую драйвер персонажа. Поэтому я регистрирую файловые операции. Когда я регистрация read
функции я извлеченный minor
номер этого путемПочему открытый вызов принимает два аргумента (struct inode *, struct file *)?
myread(struct file * file, char __user * ubuf, size_t lbuf, loff_t *offset)
{
int minor;
minor = MINOR(file->f_path.dentry->d_inode->f_pos->i_rdev);
.......
Это правило будет применяться к open
вызову тоже.
myopen(struct inode * inode, struct file * file)
struct file
определение иметь ссылку на struct inode
. Поэтому достаточно одного аргумента для вызова open
.
Мои вопросы:
- Почему
open
есть два аргумента? (или) почемуread
не имеетstruct inode *
аргумент? - Чтобы извлечь второстепенное число в
read
звонок, я использовал выше инструкцию. Чтобы найти определения и заголовочные файлы, мне понадобилось 1 час 30 минут. Есть ли простой способ найти определения структур? - Сколько способов мы можем найти ссылку
struct inode
черезstruct file
и что является лучшим способом?
Потому что соглашения ядра таковы. Для их изменения требуется много переписывания кода. –