首页 > 其他分享 >proc_create_data函数创建/proc/目录下的文件

proc_create_data函数创建/proc/目录下的文件

时间:2024-03-31 11:22:22浏览次数:21  
标签:文件 usb hub proc create data

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

相关文章

  • .NET DataTable 去重过滤高级算法
     ///<summary>///过滤DataTalbe添加处理(使用hashkey处理)最快///</summary>///<paramname="dataTable"></param>///<paramname="selectedNodes"></param>///<returns></returns>publicDataTabl......
  • DataGrip的安装和破解
    DataGrip的安装和破解安装包获取方式:关注公众号爬虫探索者,发送datagrip即可领取。解压安装包下一步确定安装路径配置安装项菜单目录默认即可安装结束破解教程可以参考:pycharm破解安装......
  • [linux] ubuntu 下安装qtcreate遇到“无法加载Qt平台插件‘xcb’问题”解决方案
    [linux]ubuntu下安装qtcreate遇到“无法加载Qt平台插件‘xcb’问题”解决方案以下是遇到的三种报错情况From6.5.0,xcb-cursor0orlibxcb-cursor0isneededtoloadtheQtxcbplatformplugin.CouldnotloadtheQtplatformplugin“xcb”in“”eventhough......
  • UE4 c++ 通过枚举寻找DataTable中的数据
    DataTable中的数据DataTable中每一行数据是一个结构体在C++代码中定义结构体,然后可以在蓝图中可以创建以此结构体为单元的DataTable枚举变量定义一个头文件来存储枚举变量,然后可以在要使用的文件中利用MyEnumPtr=FindObject<UEnum>(ANY_PACKAGE,TEXT("EGridShapEnum"),tr......
  • 前端面试手写题目|编写一个函数,实现对象深拷贝,递归引用,日期,正则symbol健。手写Object.
    快速,选择,希尔45,编写一个函数,实现对象深拷贝,并解决递归引用,日期,正则表达式,对象中含有symbol健等问题。functiondeepCopy(obj,cache=newWeakMap()){if(obj==null||typeofobj!=='object'){r......
  • 【机器学习】数据探索(Data Exploration)---数据质量和数据特征分析
    一、引言  在机器学习项目中,数据探索是至关重要的一步。它不仅是模型构建的基础,还是确保模型性能稳定、预测准确的关键。数据探索的过程中,数据质量和数据特征分析占据了核心地位。数据质量直接关系到模型能否从数据中提取有效信息,而数据特征分析则决定了模型能否准确捕捉......
  • data分区格式f2fs改为ext4
    问题:设备是不带电池的,关机的时候是直接断电的,如果data分区是f2fs的文件系统格式,这种操作是有一定概率性损坏文件系统了导致开不了机。f2fs改为ext4就可以减小异常掉电后数据丢失的概率。异常开机:  正常开机会有很多init的信息:  措施:data分区改成ext4的格式文件系统:A......
  • openGauss 工具链_DataKit
    DataKit可获得性本特性自openGauss5.0.0版本开始引入。特性简介DataKit是基于Web的openGauss的可视化的平台系统,目的是方便客户使用和管理openGauss可视化工具,可以为客户降低openGauss数据库安装使用门槛,做到安全中心管理,插件管理,以及其它功能包括一键化部署、卸载、组件化安......
  • VOL框架 GetPageData 前端加入自定义查询条件的处理方法
    VOL框架GetPageData前端加入自定义查询条件的处理方法前端加入两个自定义条件:开始日期,结束日期publicoverridePageGridData<ST_QueryFeeReceiveable>GetPageData(PageDataOptionsoptions){QuerySql=$@"SELECTFeeReceivableID,R.FeeI......
  • KingbaseES V8R3集群运维案例之---集群启动“DATA_SIZE_DIFF 16 (MB)”故障
    案例说明:为保证集群数据的一致性安全,在主备库的数据相差“DATA_SIZE_DIFF>=16M"以上时,该备库不能参与主备切换,并且通过kingbase_monitor.sh启动集群时,集群将无法启动;本案例对此种故障做了复现,并测试了解决方法。适用版本:KingbaseESV8R3适用版本:KingbaseESV8R3一、案例......