Linux 带有结构参数的内核系统调用实现

Linux Kernel system call implementation with struct parameter

我只知道如何向 Linux 的内核添加系统调用。我的系统调用(像许多其他系统调用一样)采用指向我创建的结构的指针。如果我想将结构添加到内核源代码中,我应该如何以及在何处添加它?

include/uapi/linux 中放置一个包含新 struct 的 header。 通过使用适当的类型来避免名称空间污染,例如__u16 而不是 unsigned short/uint16_t__kernel_time_t 而不是 time_t ...等等。查看 struct mii_ioctl_data 示例。

通过将 header-y += new_header.h 条目添加到 include/uapi/linux/Kbuild,然后您可以使用 make headers_install.

导出 header

默认情况下,它会在 ./usr 中安装 header。如果您希望将它们安装为系统 headers,请改用 make headers_install INSTALL_HDR_PATH=/usr。这导致 uapi 目录的内容被合并到 /usr/include 中。然后你可以在你的用户空间程序中#include <linux/new_header.h>