打开linux内核文件时使用的kmalloc在哪里?

时间:2018-06-01 15:16:46

标签: linux-kernel

我知道当我们调用open时,linux内核中的slub中会有一个struct文件。我想知道那个结构的地址。所以我需要找到它分配该结构的kmalloc。但我找不到它。我认为它会像fs/open.c那样,但没有kmalloc。谁能帮我?感谢。

1 个答案:

答案 0 :(得分:0)

open系统调用(在fs/open.c中)调用do_sys_open。在那里,第一个struct file相关的行是

struct file *f = do_filp_open(dfd, tmp, &op);
{p> do_filp_openfs/namei.c中定义,并调用path_openat以获取它返回的struct file *。在该函数中,通过

获得空struct file *
file = get_empty_filp();

get_empty_filp(来自fs/file_table.c)使用kmem_cache_zalloc分配归零内存with caching,然后初始化struct file(包括所有锁等)