sysfs介面函式的建立 DEVICE ATTR

2021-06-04 14:24:04 字數 1248 閱讀 1673

sysfs介面函式到建立_device_attr

最近在弄sensor驅動,看過乙個某廠家的成品驅動,裡面實現的全都是sysfs介面,hal層利用sysfs生成的介面,對sensor進行操作。

說道sysfs介面,就不得不提到函式巨集 device_attr

原型是#define device_attr(_name, _mode, _show, _store) \

struct device_attribute dev_attr_##_name = __attr(_name, _mode, _show, _store)

函式巨集device_attr內封裝的是__attr(_name,_mode,_show,_stroe)方法,_show表示的是讀方法,_stroe表示的是寫方法。

當然_attr不是獨生子女,他還有一系列的姊妹__attr_ro巨集只有讀方法,__attr_null等等

如對裝置的使用  device_attr  ,對匯流排使用  bus_attr  ,對驅動使用 driver_attr  ,對類別 (class) 使用  class_attr,  這四個高階的巨集來自於

device_attr  巨集宣告有四個引數,分別是名稱、許可權位、讀函式、寫函式。其中讀函式和寫函式是讀寫功能函式的函式名。

如果你完成了device_attr函式巨集的填充,下面就需要建立介面了

例如:static device_attr(polling, s_irugo | s_iwusr, show_polling, set_polling);

static struct attribute *dev_attrs = ;

當你想要實現的介面名字是polling的時候,需要實現結構體struct attribute *dev_attrs

其中成員變數的名字必須是&dev_attr_polling.attr

然後再封裝

static struct attribute_group dev_attr_grp = ;

在利用sysfs_create_group(&pdev->dev.kobj, &dev_attr_grp);建立介面

通過以上簡單的三個步驟,就可以在adb shell 終端檢視到介面了。當我們將資料 echo 到介面中時,在上層實際上完成了一次 write 操作,對應到 kernel ,呼叫了驅動中的 「store」。同理,當我們cat 乙個 介面時則會呼叫 「show」 。到這裡,只是簡單的建立了 android 層到 kernel 的橋梁,真正實現對硬體操作的,還是在 "show" 和 "store" 中完成的。

SYSFS中屬性檔案的建立

1 device中建立屬性檔案 1 函式呼叫關係 device create file sysfs create file 2 相關的資料結構 1 struct attribute 1 struct device attribute 3 相關的巨集定義 define device attr name...

sysfs探索 store和show的介面

簡單分析 1 本樣例主要測試kobject結構,kobject對應sysfs檔案系統中的乙個目錄,該目錄對應乙個具體的事物。2 首先通過example kobj kobject create and add kobject example kernel kobj 將該結構加入 到 sys kerne...

sysfs系統 檔案和目錄的建立

sysfs是linux的特殊檔案系統,這個檔案系統主要作用是在使用者態展示裝置的資訊。linux計算機系統中,可以在根目錄下面找到sys目錄,這個目錄就是利用sysfs檔案系統進行建立的。開啟sys目錄,可以看到裝置的分類顯示,如下所示 yxf yxf pc sys ls block bus cla...