生活随笔
收集整理的這篇文章主要介紹了
(Linux 2.6设备管理机制)kobject和kset
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux 2.6內核的一個重要特色是提供了統一的內核設備模型。Linux 2.6內核引入的新的設備管理機制的最高層抽象為kobject,通過這個數據結構使所有設備在底層都具有統一的接口。kobject結構主要提供三方面的功能:引用計數、sysfs表示以及熱插拔等事件支持。kobject與sysfs文件系統緊密關聯,每個在內核中注冊的kobject對象都對應于sysfs文件系統中的一個目錄。kobject結構定義如下:
struct?kobject?{ ? ????const?char??????*name;?//名稱 ? ????struct?list_head????entry;?//同類kobjects的鏈表 ? ????struct?kobject??????*parent;?//?父對象 ? ????struct?kset?????*kset;?//?所屬的集合 ? ????struct?kobj_type????*ktype;?//?對象的類型 ? ????struct?sysfs_dirent?*sd;?//?在sysfs?中的目錄項 ? ????struct?kref?????kref;?//?計數 ? ????unsigned?int?state_initialized:1; ? ????unsigned?int?state_in_sysfs:1; ? ????unsigned?int?state_add_uevent_sent:1; ? ????unsigned?int?state_remove_uevent_sent:1; ? ????unsigned?int?uevent_suppress:1; ? }; ?
kobj_type表示對象的類型:
struct?attribute?{ ? ????const?char??*name; ? ????struct?module???*owner; ? ????mode_t??mode; ? }; ? struct?kobj_type?{ ? ????void?(*release)(struct?kobject?*kobj); ? ????struct?sysfs_ops?*sysfs_ops;//sysfs操作接口 ? ????struct?attribute?**default_attrs;//屬性 ? }; ?
kobject對象的接口函數如下:
void?kobject_init(struct?kobject?*kobj,?struct?kobj_type?*ktype); ? int?kobject_add(struct?kobject?*kobj,struct?kobject?*parent,const?char?*fmt,?...); ? void?kobject_del(struct?kobject?*);? ? struct?kobject?*?kobject_create(void); ? struct?kobject?*kobject_get(struct?kobject?*kobj); ? void?kobject_put(struct?kobject?*?kobj);//減少使用計數 ?
kobject通常通過kset組織成層次化的結構,kset是具有相同類型的kobject的集合。所有屬于同一個ksets的對象(kobject)的parent都指向該ksets的kobj成員。
struct?kset?{ ? ????struct?list_head?list;?//同一kset的鏈表 ? ????spinlock_t?list_lock;//鎖 ? ????struct?kobject?kobj;?//自身的kobject ? ????struct?kset_uevent_ops?*uevent_ops;//?uevent操作,如熱插拔事件 ? }; ?
ksets對象的接口函數如下:
void?kset_init(struct?kset?*?k); ? struct?kset?*?kset_create_and_add(const?char?*name,struct?kset_uevent_ops?*u, ? ????????????????????????struct?kobject?*parent_kobj); ? int?kset_register(struct?kset?*kset); ? void?kset_unregister(struct?kset?*kset); ?
總結
以上是生活随笔 為你收集整理的(Linux 2.6设备管理机制)kobject和kset 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。