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é)點的權限
led_status_show:使用cat命令查看sys接口時調用的函數
led_status_store:使用echo命令往sys接口寫入內容時調用的函數
2、完成sys節(jié)點的讀寫函數
static unsigned int led = 0;
/*
* sys節(jié)點的讀函數
* 執(zhí)行 cat /sys/devices/platform/leds/led_status時會調用
*/
static ssize_t led_status_show(struct device *dev, struct device_attribute *attr, char *buf)
{
//buf是通過cat命令顯示到終端的內容,這里顯示led變量
return sprintf(buf, "%s:%d.n", "led", led);
}
/**
* sys節(jié)點的寫函數
* 用echo命令往sys節(jié)點寫入內容時,會調用該函數
*/
static ssize_t led_status_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
//寫入的內容會存放到buf中,這里將buf內容賦值給led變量
sscanf(buf, "%d", &led);
return count;
}
示例中,led_status_show()函數和led_status_store()函數的作用分為打印led變量的值和 修改led變量的值 .
3、定義struct attribute和struct attribute_group數組
static struct attribute *led_attributes[]={
/*上述使用了DEVICE_ATTR聲明節(jié)點名字為led_status,
* 則struct attribute名字應為:
* 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數組
};
上述使用了DEVICE_ATTR聲明節(jié)點名字為led_status, 則struct attribute名字應為:dev_attr_ + (節(jié)點名) + .attr。所以名字為dev_attr_led_status.attr。
4、在probe函數中調用sysfs_create_group()函數注冊sysfs接口
-
接口
+關注
關注
33文章
9446瀏覽量
156145 -
驅動
+關注
關注
12文章
1928瀏覽量
88204 -
Linux
+關注
關注
88文章
11628瀏覽量
217987 -
Sysfs
+關注
關注
0文章
15瀏覽量
6410
發(fā)布評論請先 登錄
Linux驅動中創(chuàng)建sysfs接口的方法
Linux驅動中創(chuàng)建procfs接口的方法
Linux驅動中創(chuàng)建debugfs接口的方法
【AWorks試用體驗】使用sysfs文件系統 控制IED(1) Shell 點亮LED
字符設備驅動,平臺設備驅動,設備驅動模型,sysfs的比較
sysfs platform總線
openSTLinux上的sysfs接口無法使用可能是什么問題?
【EASY EAI Nano人工智能開發(fā)套件試用體驗】GPIO點燈——使用sysfs接口
學會使用Linux 文件系統:procfs, sysfs, debugfs
Linux RTC驅動模型分析之rtc-sysfs.c
Linux設備模型:sysfs
在驅動中創(chuàng)建sysfs接口完整例子
linux--sysfs文件系統

如何創(chuàng)建sysfs接口
評論