linux内核节点的创建

[复制链接]
733|0
 楼主| keer_zu 发表于 2020-3-19 15:06 | 显示全部楼层 |阅读模式
内核如何创建一个核心节点:

  1. struct kobject *kobject_create_and_add(const char *name, struct kobject *parent)
  2. {
  3.         struct kobject *kobj;
  4.         int retval;

  5.         kobj = kobject_create();
  6.         if (!kobj)
  7.                 return NULL;

  8.         retval = kobject_add(kobj, parent, "%s", name);
  9.         if (retval) {
  10.                 printk(KERN_WARNING "%s: kobject_add error: %d\n",
  11.                        __func__, retval);
  12.                 kobject_put(kobj);
  13.                 kobj = NULL;
  14.         }
  15.         return kobj;
  16. }
  17. EXPORT_SYMBOL_GPL(kobject_create_and_add);



节点是挂在kobj下。那么kobj在哪里呢?

  1. <div><pre name="code" class="csharp">struct kobject *kobject_create(void)
  2. {
  3.         struct kobject *kobj;

  4.         kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
  5.         if (!kobj)
  6.                 return NULL;

  7.         kobject_init(kobj, &dynamic_kobj_ktype);
  8.         return kobj;
  9. }</pre>


  10. <pre name="code" class="csharp">static struct kobj_type dynamic_kobj_ktype = {
  11.         .release        = dynamic_kobj_release,
  12.         .sysfs_ops        = &kobj_sysfs_ops,
  13. };</pre></div>


所以。能够知道power节点是在sysfs的ops下创建。它的位置就是 /sys/power/


您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1488

主题

12949

帖子

55

粉丝
快速回复 在线客服 返回列表 返回顶部