Linux kernel 为linux内核打开文件时,kmalloc在哪里使用?

Linux kernel 为linux内核打开文件时,kmalloc在哪里使用?,linux-kernel,Linux Kernel,我知道当我们调用open时,在linux内核的slub中会有一个struct文件。我想知道那个结构的地址。所以我需要找到kmalloc,它在那里分配结构。但是我找不到它。我原以为它会是类似于fs/open.c的地方,但这里没有这个kmalloc。有人能帮我吗?谢谢。打开系统调用(in)。在这里,与结构文件相关的第一行是 struct file*f=do_filp_open(dfd、tmp和op); 在fs/namei.c中定义,并调用以获取它返回的结构文件*。在该函数中,通过 file=get

我知道当我们调用open时,在linux内核的slub中会有一个struct文件。我想知道那个结构的地址。所以我需要找到
kmalloc
,它在那里分配结构。但是我找不到它。我原以为它会是类似于
fs/open.c
的地方,但这里没有这个
kmalloc
。有人能帮我吗?谢谢。

打开系统调用(in)。在这里,与结构文件相关的第一行是

struct file*f=do_filp_open(dfd、tmp和op);
fs/namei.c
中定义,并调用以获取它返回的
结构文件*
。在该函数中,通过

file=get_empty_filp();
(来自
fs/file_table.c
)使用
kmem_cache_zalloc
分配零内存,然后初始化
结构文件(包括所有锁等)