proc_create_data 是Linux内核中用于创建 /proc 虚拟文件系统中的一个文件接口函数。这个函数允许内核模块或驱动程序在 /proc 目录下创建一个文件节点,用户空间的程序可以通过读写这个文件来与内核模块进行交互,获取或设置相关信息。函数原型通常如下所示:
struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops, void *data);
- name:要创建的文件名,将在 /proc 下的 parent 目录下创建。
- mode:创建的文件权限,类似于Unix文件权限,例如S_IRUGO | S_IWUSR表示文件对所有用户可读,对文件所有者可写。
- parent:父目录的proc_dir_entry结构体指针,通常是 /proc 下的一个子目录。
- proc_fops:指向file_operations结构体的指针,定义了对这个文件执行诸如open、read、write、ioctl等操作时的回调函数。
- data:传递给文件操作函数的私有数据指针,通常用于在回调函数中识别不同的实例。当用户空间通过文件系统接口对创建的 /proc 文件进行操作时,内核会调用相应的 file_operations 结构体中的函数来处理请求,从而实现内核与用户空间的数据交互。
示例:
// su806d/kernel4.14/drivers/usb/host
void usb_hub_test_init(void) { /* create debugfs */ wcn_usb_hub = debugfs_create_dir("usb_hub", NULL); if (!debugfs_create_file("cmd_test", 0444, wcn_usb_hub, NULL, &usb_test_fops)) { pr_err("%s debugfs_create_file fail!!\n", __func__); debugfs_remove_recursive(wcn_usb_hub); } /*creat proc node of usb_control*/ proc_create_data("usb_control", 0666, NULL, &usb_hub_proc_fops, NULL); }
标签:文件,usb,hub,proc,create,data From: https://www.cnblogs.com/yuanqiangfei/p/18106516