全部博文(516)
分类: LINUX
2012-11-12 13:54:04
1,在2.6系统中,处理器与设备之间的通道叫总线,可以是实实在在存在的总线,也可以是虚拟的总线,比如平
台总线platform。总线的所在位置/sys/bus目录下
2,总线描述
struct bus_type{
const char *name;//总线名字
struct bus_attribute *bus_attrs;//总线属性
struct device_attribute *dev_attrs;//设备属性
struct driver_attribute *drv_attrs;//驱动属性
.......
}
3,总线注册/删除
bus_register(struct bus_type *bus) /先把结构实现了,在调用注册函数去往系统里注册
bus_unregister(struct bus_type *bus)
4,总线方法
int (*match)(struct device * dev,struct device_driver *drv)
当一个新设备或者驱动被添加到这个总线时,该方法被调用。用于判断指定的驱动程序是否能处理指定的设备。若可以,则返回非零值、设备有个名字,驱动一个名字,两者一样,可以处理
int dev(*uenvent)(struc device *dev,char *envp,int num_envp,char *buffer,int buffer_size)热插拔的时候调用
5,总线属性
总线属性由bus_atteibute描述,定义如下
struct bus_attribute{
struct attribute attr; //对应文件
ssize_t(*show)(struct bus_type *,char * buf); //读
ssize_t(*store)(struct bus_type *,const * buf,size_t count); //写
}
创建属性
int bus_create_file(struct bus_type *bus,struct bus_attribut *attr)
删除属性
int bus_remove_file(struct bus_type *bus,struct bus_attribut *attr)