linux 内核中的 ioctl 调用流程

ioctl call flow in linux kernel

我想了解 linux 内核中 ioctl 调用的调用流程,我有一个问题 - 当我们从用户空间调用 ioctl 时,linux 内核中的哪个函数或模块负责将此 ioctl 调用转换为驱动程序中相应的 ioctl 调用。我知道驱动程序的 ioctl 不会直接从用户空间调用。首先调用必须通过一些内核 API,然后 API 将依次调用驱动程序 ioctl。请帮助我指出内核 API 将 ioctl 传输到合适的驱动程序。

首先,我们从 open 调用 here or more like here 的路径中找到 struct file

然后文件描述符从数字转换为struct file here and here.

然后你只需从 file_operations 调用 ioctl 就像 here but the whole ioctl.c 我想应该值得一个循环。