Где используется kmalloc при открытии файла для ядра Linux? - PullRequest
0 голосов
/ 01 июня 2018

Я знаю, что когда мы вызываем open, в slub в ядре linux будет файл struct.Я хочу знать этот адрес этой структуры.Поэтому мне нужно найти kmalloc, где он размещает эту структуру.Но я не могу найти это.Я думал, что это будет где-то вроде fs/open.c, но этого нет kmalloc.Может кто-нибудь мне помочь?Спасибо.

1 Ответ

0 голосов
/ 05 июня 2018

Системный вызов openfs/open.c) вызывает do_sys_open.Там первая struct file связанная строка

struct file *f = do_filp_open(dfd, tmp, &op);

do_filp_open определена в fs/namei.c и вызывает path_openat для полученияstruct file * что он возвращает.В этой функции пустой struct file * получается через

file = get_empty_filp();

get_empty_filp (из fs/file_table.c) использует kmem_cache_zalloc для выделения обнуленной памяти с кэшированием и затем инициализирует struct file (включая все блокировки и т. Д.)

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