• Linux 内核 kobject 初始化


    本书已经展示了许多数据类型, 带有简单的在编译或者运行时初始化机制. 一个 kobject 的初始化有些复杂, 特别当使用它的所有函数时. 不管一个 kobject 如何使用, 但是, 必须进行几个步骤.

    这些步骤的第一个是仅仅设置整个 kobject 为 0, 常常使用一个对 memset 的调用. 常 常这个初始化作为清零这个 kobjiect 嵌入的结构的一部分. 清零一个 kobject 失败导 致非常奇怪的崩溃, 进一步会掉线; 这不是你想跳过的一步.

    下一步是设立一些内部成员, 使用对 kobject_init() 的调用: void kobject_init(struct kobject *kobj);

    在其他事情中, kobject_init 设置 kobject 的引用计数为 1. 调用 kobject_init 不够, 但是. kobject 用户必须, 至少, 设置 kobject 的名子. 这是用在 sysfs 入口的名子. 如果你深入内核代码, 你可以发现直接拷贝一个字符串到 kobject 的名子成员的代码, 但是应当避免这个方法. 相反, 使用:

    int kobject_set_name(struct kobject *kobj, const char *format, ...);

    这个函数采用一个 printk 风格的变量参数列表. 不管你信或不信, 对这种操作实际上可 能失败( 他可能试图分配内存 ); 负责任的代码应当检查返回值并且有针对性的相应.

    其他的由创建者应当设置的 kobject 成员, 直接或间接, 是 ktype, kset, 和 parent. 我们在本章稍后到这些.

  • 相关阅读:
    awk命令
    计算机基础
    python基础-条件判断
    jmeter分布式负载
    jmeter之JSON Path Extractor取值关联
    3.regsvr32 使用说明
    2.NPS代理
    1.正向代理和反向代理
    Calendar 获取指定日期所在月份的第一天、最后一天、下个月第一天等
    mysql 数据库 小知识
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11147406.html
Copyright © 2020-2023  润新知