В модуле ядра Linux, как я могу получить Inode известного пути - PullRequest
4 голосов
/ 16 ноября 2009

В модуле ядра linux (т.е. работающем в пространстве ядра) у меня есть путь к файлу.

Какие функции можно использовать для получения индекса этого файла. В частности, мне нужно получить "inode *", указывающий на inode файла.

Ответы [ 3 ]

5 голосов
/ 17 ноября 2009

Вам не нужно открывать файл. В ядре доступна функция поиска, которая переводит char *name в struct nameidata. Пожалуйста, обратитесь к path_lookup .

Вы также можете посмотреть, как работает алгоритм разрешения пути, здесь .

1 голос
/ 21 ноября 2009

Исходя из моего опыта работы с ядром, я предлагаю всегда использовать функции верхнего уровня, такие как path_lookup, а не функции в середине.

1 голос
/ 16 ноября 2009

Вы можете использовать функцию filp_open, но, как указано в комментарии к этой функции, открытие файлов в модуле ядра - это не то, что вам нужно.

Вот функция , которая вернет struct file для вашего пути. Оттуда я думаю, что вы можете перейти к inode

Бонус: Может быть, это не то, что вы намереваетесь сделать, но вот статья о чтении / записи файлов из ядра и почему вы не хотите это делать.

...