2015-09-25 39 views
2

我有兴趣从设备树的父节点向子节点传递一些数据(在运行时动态创建)。举例来说,我在设备树下面的条目:(?正确的)linux内核设备从父到子数据树传递数据

parent_node { 
    a-string-property = "A string"; 
    a-string-list-property = "first string", "second string"; 
    a-byte-data-property = [0x01 0x23 0x34 0x56]; 
    child-node1 { 
     first-child-property; 
     second-child-property = <1>; 
     a-string-property = "Hello, world"; 
    }; 
    child-node2 { 
     some_data ; 
    }; 
}; 

据我所知,你不能在运行时创建的设备树节点的/更新属性。

那么,有没有一种机制来传递父节点和子节点(可能通过struct bus_typestruct devicestruct device_driver)之间的数据?

此数据传递的最终目的是为设备的内存映射(子节点)的地址转换提供偏移量。

+0

你有没有“父节点和子节点之间*通数据*”的例子吗? – sergej

+0

如果我有一个例子,我不会问:) – user426639

+0

“从父母到孩子传递数据”太含糊。有很多方法可以传递数据。你能更具体些吗?你在说什么子系统(时钟,声音......)?请描述用例。 – sergej

回答

0

您无法在运行时创建/更新设备树节点的属性(正确?)。

在某些平台上,设备树可以在运行时进行操作。 查看CONFIG_OF_DYNAMIC配置项。

Here是关于动态dt的介绍。

的平台SPARC的PowerPCseem to have下面的函数用于此目的:

int of_set_property(struct device_node *dp, const char *name, void *val, int len) 
+0

你是对的 - sparc体系结构确实有这个特性,不确定pc的功耗。但是,不幸的是,我的体系结构是ARM,因此这条路是无关紧要的。任何人都可以提出一些涉及某些总线结构的东西(只需一个演练即可,没有代码必要:)) – user426639

相关问题