linux设备模型中ktype的用法

http://tech.ddvip.com   2008年09月09日    社区交流

本文详细介绍linux设备模型中ktype的用法

  最近在驱动开发这块接触的比较多,以前曾写过一篇《利用udev、sys动态创建设备结点》,在那篇文章里曾讲过,设备驱动中主要依靠下面两个功能完成的:

  1、在/sys/class下创建farsight_class类

  my_class =class_create(THIS_MODULE, "farsight_class");

  2、在farsight_class中创建新的class设备

  class_device_create(my_class,NULL, devno, NULL,"farsight_dev");

  然后会在/sys中出现如图的文件结构:

linux设备模型中ktype的用法

  其中”dev”和uevent都是“属性”,可以读取dev获取设备的主次设备号;也可以对uevent操作;让内核发出“add”事件用于热插拔。如:

linux设备模型中ktype的用法

linux设备模型中ktype的用法

  注:这里写入任何值都会导致“add”事件的产生,udevmonitor检测时现象如下:

UEVENT[1220019773.507374] add   /class/farsight_class/farsight_dev (farsight_class)

  那么上述功能实现的原理是什么呢?现在就要过度到本文的主题ktype的使用了。先认识下这个结构

  kype的结构定义为:

struct kobj_type {
  void (*release)(struct kobject *);
  struct sysfs_ops *sysfs_ops;/*提供实现以下属性的方法*/
  struct attribute **default_attrs; /*用于保存类型属性列表(指针的指针) */
};

来源:blog.csdn    作者:刘洪涛    责编:豆豆技术应用

正在加载评论...