Получение inode по пути в ядре Linux

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

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

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

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

Ответов (2)

Решение

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

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

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

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

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