当前位置: 首页 > news >正文

好看的企业网站模板wordpress用户注册免邮箱

好看的企业网站模板,wordpress用户注册免邮箱,南通网站建设公司哪个好,设计说明生成器设备数插件注册子系统简单案例 文章目录前言参考资料一、操作实验实验代码实测结果代码分析ConfigFS 重要结构体重温顶层子系统- configfs_subsystem二、API说明函数:config_group_init函数:config_group_init总结前言 前面了解了设备树插件语法&#x…

设备数插件注册子系统简单案例

文章目录

  • 前言
  • 参考资料
  • 一、操作实验
    • 实验代码
    • 实测结果
    • 代码分析
      • ConfigFS 重要结构体重温
      • 顶层子系统- configfs_subsystem
  • 二、API说明
    • 函数:config_group_init
    • 函数:config_group_init
  • 总结


前言

前面了解了设备树插件语法,设备树插件基础知识,特别是在基础知识中或者其它设备树插件入门篇中 了解了ConfigFS体系基础知识和ConfigFS 结构体。 那么 接下来就是需要一步一步根据结构体实现业务流程,最终实现内核配置编程。

这里仅从顶层子系统 案例来了解、学习 子系统注册知识点。

参考资料

设备树插件基础必备
注册configfs子系统实验
linux之configfs简介和编程入门
configfs-用户空间控制的内核对象配置

一、操作实验

实验代码

代码如下,流程再简单不过了:

  • 定义了 configfs_subsystem 结构体和它的su_group,以及su_group 下的cg_item,cg_item 下的 ci_namebuf 、ci_type
  • 定义了 config_item_type 结构体内容,属性和子节点为NULL
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/configfs.h>// 定义名为"myconfig_item_type"的配置项类型结构体
static const struct config_item_type myconfig_item_type = {.ct_owner = THIS_MODULE,.ct_item_ops = NULL,.ct_group_ops = NULL,.ct_attrs = NULL,
};// 定义一个configfs_subsystem结构体实例"myconfigfs_subsystem"
static struct configfs_subsystem myconfigfs_subsystem = {.su_group = {.cg_item = {.ci_namebuf = "myconfigfs",.ci_type = &myconfig_item_type,}}};// 模块的初始化函数
static int myconfigfs_init(void)
{// 初始化配置组config_group_init(&myconfigfs_subsystem.su_group);// 注册子系统configfs_register_subsystem(&myconfigfs_subsystem);return 0;
}
// 模块退出函数
static void myconfigfs_exit(void)
{configfs_unregister_subsystem(&myconfigfs_subsystem);
}module_init(myconfigfs_init); // 指定模块的初始化函数
module_exit(myconfigfs_exit); // 指定模块的退出函数MODULE_LICENSE("GPL"); // 模块使用的许可证
MODULE_AUTHOR("wfc");  // 模块的作者

实测结果

编译好驱动文件 insmod configfs_subsystem.ko ,加载后:/sys/kernel/config 目录下 查看目录在这里插入图片描述
在这里插入图片描述

代码分析

ConfigFS 重要结构体重温

为什么要重温这几个重要的结构体,放在这里方便对比看看。 比如你看 su_group、cg_item、ci_namebuf、ci_type 为什么在定义configfs_subsystem 结构体时候,属性需要那样写 写这些值? 为什么? 因为人家结构体里面就是这样定义的,那么固定属性值就是这些。 那么 就需要你自己见名知意了。

重要几个在结构体数据如下:

// 子系统
struct configfs_subsystem {struct config_group	su_group;struct mutex		su_mutex;
};/***	group - a group of config_items of a specific type, belonging*	to a specific subsystem.*/
struct config_group {struct config_item		cg_item;struct list_head		cg_children;struct configfs_subsystem 	*cg_subsys;struct list_head		default_groups;struct list_head		group_entry;
};struct config_item {char			*ci_name;char			ci_namebuf[CONFIGFS_ITEM_NAME_LEN];struct kref		ci_kref;struct list_head	ci_entry;struct config_item	*ci_parent;struct config_group	*ci_group;const struct config_item_type	*ci_type;struct dentry		*ci_dentry;
};struct config_item_type {struct module				*ct_owner;struct configfs_item_operations		*ct_item_ops;struct configfs_group_operations	*ct_group_ops;struct configfs_attribute		**ct_attrs;struct configfs_bin_attribute		**ct_bin_attrs;
};

顶层子系统- configfs_subsystem

为什么要重温这几个重要的结构体,放在这里方便对比看看。 那是因为 你看下面的顶层子系统定义,如下:
你看` su_group、cg_item、ci_namebuf、ci_type````java
// 定义一个configfs_subsystem结构体实例"myconfigfs_subsystem"
static struct configfs_subsystem myconfigfs_subsystem = {.su_group = {.cg_item = {.ci_namebuf = "myconfigfs",.ci_type = &myconfig_item_type,}}};

就这一个顶层configfs_subsystem 结构体的定义,其实就定义了好几方面内容:

  • 定义了子系统configfs_subsystem 是myconfigfs_subsystem
  • 定义了config_group 是 su_group
  • 定义了config_item 是cg_item
  • 定义了 ci_name 属性值是 myconfigfs,代表顶层结构值名称是 myconfigfs
  • 定义了config_item_type 指向ci_type,就是 myconfig_item_type 指针
    对于 config_item_type 结构体如下、同时代码中myconfig_item_type 定义实则样的? 如下

struct config_item_type {struct module				*ct_owner;struct configfs_item_operations		*ct_item_ops;struct configfs_group_operations	*ct_group_ops;struct configfs_attribute		**ct_attrs;struct configfs_bin_attribute		**ct_bin_attrs;
};```java
// 定义名为"myconfig_item_type"的配置项类型结构体
static const struct config_item_type myconfig_item_type = {.ct_owner = THIS_MODULE,.ct_item_ops = NULL,.ct_group_ops = NULL,.ct_attrs = NULL,
};

二、API说明

函数:config_group_init

config_group_init 是 Linux 内核中 ConfigFS 子系统的一个函数,用于初始化一个 config_group 结构体。
功能

  • 初始化 config_group 结构体的基本字段
  • 设置默认的 group 操作(如果未提供)
  • 准备 group 以便后续注册到 ConfigFS 中

函数:config_group_init

configfs_register_subsystem 是用于向 ConfigFS 注册一个子系统的函数。

功能

  • 将一个新的子系统注册到 ConfigFS 文件系统中
  • 在 configfs 挂载点下创建对应的目录结构
  • 使子系统的配置接口对用户空间可见

总结

  • 实际简单案例说明顶层子系统的注册 演示
  • 子系统注册演示,最终结果在 /sys/kernel/config 路径下看到我们注册的子系统
  • 简单demo 演示,理解子系统。重温ConfigFS 重要结构体。理解为什么属性名就是那些。
http://www.dtcms.com/a/456513.html

相关文章:

  • 银行门户网站系统建设方案网站建立定位企划
  • 做一个什么样的网站做一个公司官网
  • 网站开发语言选择黄浦西安网站建设
  • 网站开发需要多少钱如何重庆小程序开发
  • 网站备案幕布照片ps网站建设的展望
  • 网站建设费长期待摊费用一起做网店货源app
  • 网站设计全包cad dwt模板做网站模版
  • 男的女的做那个视频网站建设网站需要什么软件下载
  • 网站图片设置隐私保护怎么下载企业做网站的流程
  • 三亚做网站多少钱厦门网页设计学校
  • 青海省建设网站价格低学校建立网站
  • 国内较好的网站设计公司赤坎手机网站建设
  • 做网站一般链接什么数据库用jsp做婚纱网站的流程
  • 网站开发人员有哪些广州专业网站制作设计
  • 给网站首页图片做外网超链接_为什么会弹出一个服务器登录窗口建设文化产业网站的方案
  • 网站建设的渠道策略多图片ppt页面设计
  • 在电商网站上做推广的技巧wordpress关联微信
  • 创办网站需要怎么做网站建设与管理教程视频
  • 50万做网站视频策划方案怎么写
  • 网站建设的成本有哪些内容网站认证免费
  • 扫二维码直接进入网站 怎么做电子商务网站建设与维护第二版
  • 网站开发保密合同范本今天热搜榜前十名
  • 做网站优化给业务员提成苏州吴中区注册公司
  • 冻品网站的建设背景阿里云服务器怎么做网站
  • linux网站建设技术指南 百度网盘怎么制作游戏app
  • 百度怎样收录网站广州工商注册核名查询系统
  • 自助式网站电白网站建设公司
  • 登录注册网站怎么做西安网络公司网站建设
  • 花钱做网站需要所有权微信网站与响应式网站有哪些
  • php语言网站开发公司北京网站 体系