创建自定义的IOCTL(输入/输出控制)或Netlink命令以便用户空间程序与内核模块交互涉及几个步骤。这里将分别介绍这两种方法。
一、IOCTL 方法
1. 定义IOCTL命令
在内核模块中,需要使用宏定义你的IOCTL命令。通常情况下,IOCTL命令包括了一个命令编号、请求类型的方向(读/写/两者)以及数据大小:
#include <linux/ioctl.h>
#define MY_IOCTL_TYPE 'x' // 通常是一个字符
#define MY_IOCTL_CMD1 _IOR(MY_IOCTL_TYPE, 1, my_data_struct)
#define MY_IOCTL_CMD2 _IOW(MY_IOCTL_TYPE, 2, my_data_struct)
// ...
2. 实现ioctl函数
在你的内核模块中,实现ioctl系统调用的函数处理:
static long my_ioctl(struct file *file, unsigned int cmd, unsi