sysfs接口創(chuàng)建
基本步驟:
1、使用DEVICE_ATTR聲明一個sys節(jié)點
static DEVICE_ATTR(led_status, 0600, led_status_show, led_status_store);
led_status:在sys接口中顯示的節(jié)點名字
0600:表示操作這個led_status節(jié)點的權(quán)限
led_status_show:使用cat命令查看sys接口時調(diào)用的函數(shù)
led_status_store:使用echo命令往sys接口寫入內(nèi)容時調(diào)用的函數(shù)
2、完成sys節(jié)點的讀寫函數(shù)
static unsigned int led = 0;
/*
* sys節(jié)點的讀函數(shù)
* 執(zhí)行 cat /sys/devices/platform/leds/led_status時會調(diào)用
*/
static ssize_t led_status_show(struct device *dev, struct device_attribute *attr, char *buf)
{
//buf是通過cat命令顯示到終端的內(nèi)容,這里顯示led變量
return sprintf(buf, "%s:%d.n", "led", led);
}
/**
* sys節(jié)點的寫函數(shù)
* 用echo命令往sys節(jié)點寫入內(nèi)容時,會調(diào)用該函數(shù)
*/
static ssize_t led_status_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
//寫入的內(nèi)容會存放到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é)點名字為led_status,
* 則struct attribute名字應(yīng)為:
* dev_attr_ + (節(jié)點名) + .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é)點名字為led_status, 則struct attribute名字應(yīng)為:dev_attr_ + (節(jié)點名) + .attr。所以名字為dev_attr_led_status.attr。
4、在probe函數(shù)中調(diào)用sysfs_create_group()函數(shù)注冊sysfs接口
-
接口
+關(guān)注
關(guān)注
33文章
9491瀏覽量
156582 -
驅(qū)動
+關(guān)注
關(guān)注
12文章
1939瀏覽量
88402 -
Linux
+關(guān)注
關(guān)注
88文章
11683瀏覽量
218581 -
Sysfs
+關(guān)注
關(guān)注
0文章
15瀏覽量
6419
發(fā)布評論請先 登錄
Linux驅(qū)動中創(chuàng)建sysfs接口的方法
Linux驅(qū)動中創(chuàng)建procfs接口的方法
Linux驅(qū)動中創(chuàng)建debugfs接口的方法
【AWorks試用體驗】使用sysfs文件系統(tǒng) 控制IED(1) Shell 點亮LED
字符設(shè)備驅(qū)動,平臺設(shè)備驅(qū)動,設(shè)備驅(qū)動模型,sysfs的比較
sysfs platform總線
openSTLinux上的sysfs接口無法使用可能是什么問題?
【EASY EAI Nano人工智能開發(fā)套件試用體驗】GPIO點燈——使用sysfs接口
學(xué)會使用Linux 文件系統(tǒng):procfs, sysfs, debugfs
Linux RTC驅(qū)動模型分析之rtc-sysfs.c
Linux設(shè)備模型:sysfs
在驅(qū)動中創(chuàng)建sysfs接口完整例子
linux--sysfs文件系統(tǒng)
如何創(chuàng)建sysfs接口
評論