【问题标题】:How Can I Pass Platform specific data from one platform device/driver to another platform device/driver如何将平台特定数据从一个平台设备/驱动程序传递到另一个平台设备/驱动程序
【发布时间】:2013-07-19 06:19:05
【问题描述】:

我有两个平台设备/驱动程序 - 比如说 Pdriver1 和 Pdriver2。 我想从 Pdriver2 访问 Pdriver1 的平台特定数据。 我怎样才能做到这一点?

【问题讨论】:

  • 装有这些驱动程序的计算机如何连接?
  • 我已经使用 platform_device_registered 和 platform_driver_registered API 注册了两个驱动程序
  • 两个驱动程序是在同一台计算机上运行还是在不同的计算机上运行?
  • 是的,两个驱动程序都在同一台计算机上运行。我已经声明了一个全局结构 struct test { int a; };现在在 pdriver1 的 Probe 函数中,我正在初始化全局结构,例如静态 int test_probe(struct platform_device *pdev) { struct test *temp = kmalloc(sizeof(struct test),GFP_KERNEL); if(temp == NULL) { 返回 -1; } 温度->a =10;现在我想在 pdriver2 中访问这个结构值

标签: linux-kernel linux-device-driver


【解决方案1】:

在模块pdriver1 中,您应该使用EXPORT_SYMBOL 注册外部符号,以允许其他模块访问它。

然后,您应该将pdriver1 指定为pdriver2 的依赖项,因此modprobe 将在pdriver2 之前加载pdriver1。然后在pdriver2 中,您可以访问pdriver1 中的导出符号。

【讨论】:

  • 感谢您的回复我知道了。我有另一个问题。是否可以从 pdriver2 访问 pdriver1 的私有数据?
  • 我不确定,但想想,这是不可能的。所有其他模块都可以访问所有导出的符号(具有适当的许可证)。为了保护您的数据,您不能在公共标头中提供函数的原型。但是如果原型是已知的,模块就可以访问它。另一种方法是管理不起眼的安全系统。为什么需要隐藏符号?
猜你喜欢
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
相关资源
最近更新 更多