正常情况下, 我们可以通过module_param()在module相应目录下创建一个文件, 以用作user space与kernel space的交互.
如果需要在/sys/bus/usb/devices/usbx目录下创建相应文件, 则需要用到sysfs_create_group()函数。
// 初始化一个全局变量epStatusErr_default , 即最终在sys目录下产生的属性文件
unsigned epStatusErr_default = 0;
EXPORT_SYMBOL_GPL(epStatusErr_default);
Module_param(epStatusErr_default, int,S_IRUGO|S_IWUSR);
MODULE_PAR_DESC(epStatusErr_default,
“Default USB endpoint status: 0 is ep enough, 1 is not enough”);
// usb_host_epStatusErr_default_show/ usb_host_epStatusErr_default_store对应文件的读/写//操作. 在命令行通过echo向epStatusErr_default写数据将会调用到store, cat命令读数据时//则会调用到show.
static ssize_tusb_host_epStatusErr_default_show(struct device *dev,
struct device_attribute *attr,
char *buf)
{
Return 0;
}
static ssize_tusb_host_epStatusErr_default_store(struct device *dev,
struct device_attribute *attr,
const char*buf, size_t size)
{
Return0;
}
// --------------------
static DEVIC_ATTR(epStatusErr_default,0644,
usb_host_epStatusErr_default_show,
usb_host_epStatusErr_default_store);
static struc attribute *usb_endpoint_status[] = {
&dev_attr_epStatusErr_default.attr,
NULL,
};
Static struct attribute_groupusb_endpoint_status_group={
.name= NULL,
.attrs= usb_endpoint_statu