平台驱动与用户层的接口
2012-02-24 16:40
134 查看
/sys的作用就不多说了,如何在/sys中增加个节点成为app通往驱动的接口,需要用到这么几个内核函数:
首先定义平台驱动指针:
static struct platform_device *test_dev;
int __init test_init(void)
{
注册平台设备:
test_dev = platform_device_register_simple("test_jesse", -1, NULL, 0);
if (IS_ERR(test_dev))
{
printk(KERN_EMERG"platform register err\n");
return PTR_ERR(test_dev);
}
加接口:
sysfs_create_group(&test_dev->dev.kobj, &test_attr_group);
return 0;
}
重点就是该函数:sysfs_create_group,第一个参数没啥可说,主要的搞定第二个参数。
static struct attribute_group test_attr_group = {
.attrs = test_attrs,
};
而后构造test_attrs:
static struct attribute *test_attrs[] =
&dev_attr_coordinates.attr,
NULL //这个null一定要记得
};
哦?突然冒出个dev_attr_coordinates .
原来是一个宏悄悄的定义了该结构device_attribute。
DEVICE_ATTR(coordinates, 0644,NULL, write_test);
#define DEVICE_ATTR(_name, _mode, _show, _store) \
struct device_attribute
dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
大致的过程就是:
sysfs_create_group(),然后填充第二个参数attribute_group中的attribute数组。该数组中的元素由 DEVICE_ATTR定义。
首先定义平台驱动指针:
static struct platform_device *test_dev;
int __init test_init(void)
{
注册平台设备:
test_dev = platform_device_register_simple("test_jesse", -1, NULL, 0);
if (IS_ERR(test_dev))
{
printk(KERN_EMERG"platform register err\n");
return PTR_ERR(test_dev);
}
加接口:
sysfs_create_group(&test_dev->dev.kobj, &test_attr_group);
return 0;
}
重点就是该函数:sysfs_create_group,第一个参数没啥可说,主要的搞定第二个参数。
static struct attribute_group test_attr_group = {
.attrs = test_attrs,
};
而后构造test_attrs:
static struct attribute *test_attrs[] =
&dev_attr_coordinates.attr,
NULL //这个null一定要记得
};
哦?突然冒出个dev_attr_coordinates .
原来是一个宏悄悄的定义了该结构device_attribute。
DEVICE_ATTR(coordinates, 0644,NULL, write_test);
#define DEVICE_ATTR(_name, _mode, _show, _store) \
struct device_attribute
dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
大致的过程就是:
sysfs_create_group(),然后填充第二个参数attribute_group中的attribute数组。该数组中的元素由 DEVICE_ATTR定义。
相关文章推荐
- android系统平台显示驱动开发简要:LCD常用接口篇『二』
- 用户接口设计一 设备驱动
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- Hive用户接口(二)—使用Hive JDBC驱动连接Hive操作实例
- Hive用户接口(二)—使用Hive JDBC驱动连接Hive操作实例
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- Intel PXA27x平台中的UART接口驱动
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- Intel PXA27x平台中的UART接口驱动
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- Intel PXA27x平台中的UART接口驱动 (摘录曾慧鹏)
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- mini2440 平台上挂载I2C接口触摸屏的驱动开发过程
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布