1、Kobjects结构
#include<linux/kobject.h>
包含文件,包含kobject的定义,相关结构,和函数.
voidkobject_init(structkobject*kobj);
intkobject_set_name(structkobject*kobj,constchar*format,...);
用作kobject初始化的函数
structkobject*kobject_get(structkobject*kobj);
voidkobject_put(structkobject*kobj);
为kobjects管理引用计数的函数.
structkobj_type;
structkobj_type*get_ktype(structkobject*kobj);
表示一个kobjct被嵌入的结构类型.使用get_ktype来获得关联到一个给定kobject的
kobj_type.
intkobject_add(structkobject*kobj);
externintkobject_register(structkobject*kobj);
voidkobject_del(structkobject*kobj);
voidkobject_unregister(structkobject*kobj);
kobject_add添加一个kobject到系统,处理kset成员关系,sysfs表示,以及热插拔事件产生.
kobject_register是一个方便函数,它结合kobject_init和kobject_add.使用kobject_del来去除一
个kobject或者kobject_unregister,它结合了kobject_del和kobject_put.
voidkset_init(structkset*kset);
intkset_add(structkset*kset);
intkset_register(structkset*kset);
voidkset_unregister(structkset*kset);
为ksets初始化和注册的函数.
decl_subsys(name,type,hotplug_ops);
易于声明子系统的一个宏.
voidsubsystem_init(structsubsystem*subsys);
intsubsystem_register(structsubsystem*subsys);
voidsubsystem_unregister(structsubsystem*subsys);
structsubsystem*subsys_get(structsubsystem*subsys);
voidsubsys_put(structsubsystem*subsys);
对子系统的操作.
2、sysfs操作
#include<linux/sysfs.h>
包含sysfs声明的包含文件.
intsysfs_create_file(structkobject*kobj,structattribute*attr);
intsysfs_remove_file(structkobject*kobj,structattribute*attr);
intsysfs_create_bin_file(structkobject*kobj,structbin_attribute*attr);
intsysfs_remove_bin_file(structkobject*kobj,structbin_attribute*attr);
intsysfs_create_link(structkobject*kobj,structkobject*target,char*name);
voidsysfs_remove_link(structkobject*kobj,char*name);
创建和去除和一个kobject关联的属性文件的函数.
3、总线,设备,和驱动
intbus_register(structbus_type*bus);
voidbus_unregister(structbus_type*bus);
在设备模型中进行注册和注销总线的函数.
intbus_for_each_dev(structbus_type*bus,structdevice*start,void*data,int(*fn)(structdevice*,void*));
intbus_for_each_drv(structbus_type*bus,structdevice_driver*start,void*data,int(*fn)(struct
device_driver*,void*));
列举每个设备和驱动的函数,特别地,绑定到给定总线的设备.
BUS_ATTR(name,mode,show,store);
intbus_create_file(structbus_type*bus,structbus_attribute*attr);
voidbus_remove_file(structbus_type*bus,structbus_attribute*attr);
BUS_ATTR宏可能用来声明一个bus_attribute结构,它可能接着被添加和去除,使用上面2个函数.
intdevice_register(structdevice*dev);
voiddevice_unregister(structdevice*dev);
处理设备注册的函数.
DEVICE_ATTR(name,mode,show,store);
intdevice_create_file(structdevice*device,structdevice_attribute*entry);
voiddevice_remove_file(structdevice*dev,structdevice_attribute*attr);
处理设备属性的宏和函数.
intdriver_register(structdevice_driver*drv);
voiddriver_unregister(structdevice_driver*drv);
注册和注销一个设备驱动的函数.
DRIVER_ATTR(name,mode,show,store);
intdriver_create_file(structdevice_driver*drv,structdriver_attribute*attr);
voiddriver_remove_file(structdevice_driver*drv,structdriver_attribute*attr);
关联驱动属性的宏和函数.
4、类
structclass_simple*class_simple_create(structmodule*owner,char*name);
voidclass_simple_destroy(structclass_simple*cs);
structclass_device*class_simple_device_add(structclass_simple*cs,dev_tdevnum,structdevice*device,
constchar*fmt,...);
voidclass_simple_device_remove(dev_tdev);
intclass_simple_set_hotplug(structclass_simple*cs,int(*hotplug)(structclass_device*dev,char**envp,int
num_envp,char*buffer,intbuffer_size));
实现class_simple接口的函数;它们管理包含一个dev属性和很少其他属性的简单的类入口
intclass_register(structclass*cls);
voidclass_unregister(structclass*cls);
注册和注销类.
CLASS_ATTR(name,mode,show,store);
intclass_create_file(structclass*cls,conststructclass_attribute*attr);
voidclass_remove_file(structclass*cls,conststructclass_attribute*attr);
处理类属性的常用宏和函数.
intclass_device_register(structclass_device*cd);
voidclass_device_unregister(structclass_device*cd);
intclass_device_rename(structclass_device*cd,char*new_name);
CLASS_DEVICE_ATTR(name,mode,show,store);
intclass_device_create_file(structclass_device*cls,conststructclass_device_attribute*attr);
属性类设备接口的函数和宏.
intclass_interface_register(structclass_interface*intf);
voidclass_interface_unregister(structclass_interface*intf);
添加一个接口到一个类(或去除它)的函数.
5、固件
#include<linux/firmware.h>
intrequest_firmware(conststructfirmware**fw,char*name,structdevice*device);
intrequest_firmware_nowait(structmodule*module,char*name,structdevice*device,void*context,void
(*cont)(conststructfirmware*fw,void*context));
voidrelease_firmware(structfirmware*fw);
属性内核固件加载接口的函数.