背景
内核或者驱动开发,需要快速暴露给用户态调试的接口,可以使用device_attribute框架来快速实现。
代码
#include <linux/device.h>
static DEVICE_ATTR(cmd, S_IWUSR, NULL, cm_store_cmd);
static ssize_t cm_store_cmd(struct device *dev, struct device_attribute *attr, const char *buf, size_t len)
{
//TODO you want
return len;
}
static void __init__ module_init(void)
{
int attr_ret = 0;
attr_ret = device_create_file(dev, &dev_attr_cmd);
}
说明
经过上述的简单操作,你就可以在/sys目录下找到你暴露出来的cmd节点了,通过echo “hello” > /path/to/cmd就可以完成暴露接口的功能了