Получение inode из пути в ядре Linux - PullRequest
5 голосов
/ 02 марта 2009

В настоящее время я пытаюсь получить индекс для заданного имени пути в функции ядра. Все, что у меня есть, это полный путь. Я пробовал такие попытки, как:

user_path_at(AT_FDCWD, buffer, LOOKUP_FOLLOW, &path);

Но зубной камень в этом заданном пути, по-видимому, недействителен. Тогда я подумал, что, возможно, попробую stat () и получу из этого номер инода. Тем не менее, это только дает мне номер, а не структурный индекс. Я не знаю способа преобразования номера инода в инод без захвата существующего инода и обхода всего списка инодов. И я даже не знаю, сработает ли это. Но я, конечно, не хочу этого делать.

Есть ли какой-нибудь простой способ получить структурный инод из char * pathname внутри ядра?

Ответы [ 2 ]

2 голосов
/ 02 марта 2009

stat() даст вам индекс файла в поле "st_ino".

Извините, первоначальное недопонимание вопроса.

Если вам нужна фактическая структура inode в ядре, я вполне уверен, что само ядро ​​не будет ходить по массиву или списку в поисках номера inode (если список не очень маленький). Поскольку код ядра общедоступен, вы сможете узнать, как он это делает, а затем сделать то же самое.

0 голосов
/ 02 марта 2009

Простого пути не существует, поскольку struct inode является частью ядра, а вы находитесь в пространстве пользователя. Все зависит от конкретной реализации файловой системы. Вы уверены, что информации в статистической структуре недостаточно для ваших нужд?

В любом случае, эта ссылка может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...