proc_create_data函数创建/proc/目录下的文件
proc_create_data 是Linux内核中用于创建 /proc 虚拟文件系统中的一个文件接口函数。这个函数允许内核模块或驱动程序在 /proc 目录下创建一个文件节点,用户空间的程序可以通过读写这个文件来与内核模块进行交互,获取或设置相关信息。函数原型通常如下所示:
1 2 3 4 5 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2023-03-31 充电参数解释及锂电池工作原理相关
2021-03-31 OpenWRT介绍