p,和“Linux设备模型(6)_Bus”中struct bus结构一样,不再说明。 2.2 struct class_interface struct class_interface是这样的一个结构:它允许class driver在class下有设备添加或移除的时候,调用预先设置好的回调函数(add_dev和remove_dev)。那调用它们做什么呢?想做什么都行(例如修改设备的名称),由具体的class dr...
36structbin_attribute *dev_bin_attrs;//类似dev_attrs,只不过是二进制类型attribute37structkobject *dev_kobj;//表示该class下的设备在/sys/ 2.2 struct class_interface struct class_interface是这样的一个结构:它允许class driver在class下有设备添加或移除的时候,调用预先设置好的回调函数(add_dev和remove_dev...
; struct class_interface就是之前被串在class->p->class_interface上的类接口的结构。用于描述设备类对外的一种接口。node就是class->p->class_interfa 22、ce链表上的节点。class是指向所属class的指针。add_dev()是在有设备添加到所属class时调用的函数。当然,如果class_interface比设备更晚添加到class,也会...
int bus_create_file(struct bus_type* bus, struct bus_attribute* attr):为指定总线添加属性; void bus_remove_file(struct bus_type* bus, struct bus_attribute* attr):删除指定总线上的指定属性; 备注:struct bus_type、struct bus_attribute结构均定义在/usr/src/kernels/2.6.18-8.el5-i686/include/li...
void class_interface_unregister(struct class_interface *class_intf); /*一个类可注册多个接口*/ 设定class的好处:设备驱动一般在注册的时候都会调用此类class的一些函数,主要作用就是在sys目录里面创建一些节点,比如cd到/sys/class下面可以看到这一类的设备,与这个相关的就是一些kobjects。当然对于一个新设备,可以注...
实际该图是早期Linux2.6阶段的设备模型相关, 现在部分数据结构已经发生了变化, 最为明显的部分是bus_type和class数据结构中对应的private数据结构变化了, 统一使用struct subsys_private数据结构来维护对应内核对象的私有数据. 2) bus_type 数据结构 structbus_type{constchar*name;constchar*dev_name;structdevice*dev...
每个phy 芯片会创建一个 struct phy_device 类型的设备,对应的有 struct phy_driver 类型的驱动,这两者实际上是挂载在 mdio_bus_type 总线上的,mac 会被注册成 struct net_device。 phy_devicestructphy_device{ structphy_driver*drv;// PHY设备驱动 ...
intdevice_add(struct device*dev){struct device*parent=NULL;struct kobject*kobj;struct class_interface*class_intf;int error=-EINVAL;dev=get_device(dev);//增加此设备的引用计数if(!dev)goto done;if(!dev->p){error=device_private_init(dev);---Aif(error)goto done;}/* * for statically alloca...
intbus_register(struct bus_type*bus){int retval;struct subsys_private*priv;struct lock_class_key*key=&bus->lock_key;priv=kzalloc(sizeof(struct subsys_private),GFP_KERNEL);//分配subsys_private结构体if(!priv)return-ENOMEM;priv->bus=bus;//设置bus指针bus->p=priv;//设置bus->p指针BLOCKING_IN...
struct class_interface 就是之前被串在 class->p->class_interface 上的类接口的结构。用于 描述设备类对外的一种接口。 node 就是 class->p->class_interface 链表上的节点。 class 是指向所属 class 的指针。 add_dev()是在有设备添加到所属 class 时调用的函数。当然,如果 class_interface 比设备 更晚...