sysfs接口創(chuàng)建
基本步驟:
1、使用DEVICE_ATTR
聲明一個(gè)sys
節(jié)點(diǎn)
static DEVICE_ATTR(led_status, 0600, led_status_show, led_status_store);
led_status
:在sys接口中顯示的節(jié)點(diǎn)名字
0600
:表示操作這個(gè)led_status節(jié)點(diǎn)的權(quán)限
led_status_show
:使用cat
命令查看sys接口時(shí)調(diào)用的函數(shù)
led_status_store
:使用echo
命令往sys接口寫入內(nèi)容時(shí)調(diào)用的函數(shù)
2、完成sys節(jié)點(diǎn)的讀寫函數(shù)
static unsigned int led = 0;
/*
* sys節(jié)點(diǎn)的讀函數(shù)
* 執(zhí)行 cat /sys/devices/platform/leds/led_status時(shí)會(huì)調(diào)用
*/
static ssize_t led_status_show(struct device *dev, struct device_attribute *attr, char *buf)
{
//buf是通過(guò)cat命令顯示到終端的內(nèi)容,這里顯示led變量
return sprintf(buf, "%s:%d.n", "led", led);
}
/**
* sys節(jié)點(diǎn)的寫函數(shù)
* 用echo命令往sys節(jié)點(diǎn)寫入內(nèi)容時(shí),會(huì)調(diào)用該函數(shù)
*/
static ssize_t led_status_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
//寫入的內(nèi)容會(huì)存放到buf中,這里將buf內(nèi)容賦值給led變量
sscanf(buf, "%d", &led);
return count;
}
示例中,led_status_show()
函數(shù)和led_status_store()
函數(shù)的作用分為打印led變量的值和 修改led變量的值 .
3、定義struct attribute
和struct attribute_group
數(shù)組
static struct attribute *led_attributes[]={
/*上述使用了DEVICE_ATTR聲明節(jié)點(diǎn)名字為led_status,
* 則struct attribute名字應(yīng)為:
* dev_attr_ + (節(jié)點(diǎn)名) + .attr
* 所以名字為dev_attr_led_status.attr
*/
&dev_attr_led_status.attr,
NULL,
};
static const struct attribute_group led_attrs={
.attrs = led_attributes,//引用上述struct attribute數(shù)組
};
上述使用了DEVICE_ATTR
聲明節(jié)點(diǎn)名字為led_status
, 則struct attribute
名字應(yīng)為:dev_attr_ + (節(jié)點(diǎn)名) + .attr
。所以名字為dev_attr_led_status.attr
。
4、在probe函數(shù)中調(diào)用sysfs_create_group()
函數(shù)注冊(cè)sysfs
接口
-
接口
+關(guān)注
關(guān)注
33文章
9005瀏覽量
153763 -
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1918瀏覽量
86943 -
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213834 -
Sysfs
+關(guān)注
關(guān)注
0文章
15瀏覽量
6330
發(fā)布評(píng)論請(qǐng)先 登錄
Linux sysfs設(shè)備驅(qū)動(dòng)管理簡(jiǎn)介
Linux驅(qū)動(dòng)中創(chuàng)建sysfs接口的方法
Linux驅(qū)動(dòng)中創(chuàng)建procfs接口的方法

Linux驅(qū)動(dòng)中創(chuàng)建debugfs接口的方法

【AWorks試用體驗(yàn)】使用sysfs文件系統(tǒng) 控制IED(1) Shell 點(diǎn)亮LED
字符設(shè)備驅(qū)動(dòng),平臺(tái)設(shè)備驅(qū)動(dòng),設(shè)備驅(qū)動(dòng)模型,sysfs的比較
sysfs platform總線
openSTLinux上的sysfs接口無(wú)法使用可能是什么問(wèn)題?
【EASY EAI Nano人工智能開(kāi)發(fā)套件試用體驗(yàn)】GPIO點(diǎn)燈——使用sysfs接口
學(xué)會(huì)使用Linux 文件系統(tǒng):procfs, sysfs, debugfs
Linux RTC驅(qū)動(dòng)模型分析之rtc-sysfs.c
Linux設(shè)備模型:sysfs
在驅(qū)動(dòng)中創(chuàng)建sysfs接口完整例子
linux--sysfs文件系統(tǒng)

評(píng)論