您的位置:首页 > 其它

平台驱动与用户层的接口

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定义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐