linux - probe() 函数的参数从何而来?

标签 linux linux-kernel linux-device-driver

我正在研究 linux 设备驱动程序。目前,我大致了解设备驱动程序的流程,但我不知道 probe() 函数如何获取其参数。

例如,这是我的代码,它基于内核 3.10。

static int gpio_led_probe(struct platform_device *pdev) {
       struct gpio_led_platform_data *pdata = pdev->dev.platform_data;
       struct gpio_leds_priv *priv;
       ....
       priv = gpio_leds_create_of(pdev);
       ....
}

像这样,参数“pdev”用于各种来源。我理解 probe() 何时调用及其作用,但我找不到数据“pdev”的来源。

感谢阅读我的主题,抱歉我的英语不好。

最佳答案

探测时平台设备特定数据来自平台设置代码或设备树。 你可以在arch/arm/borad/device文件中找到相关代码 struct platform_device 嵌入了platform_data 结构,您可以在其中将平台相关数据传递给驱动程序。

在现代内核平台中,数据通过设备树传递给设备驱动程序。设备树可以在 /arch/arm/boot/dts/your_device

中找到

关于linux - probe() 函数的参数从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110495/

相关文章:

Linux Small 纯文本版本

php - 新的 mysqli() 调用可以从 cli 运行,但通过 apache httpd 失败

linux-kernel - I2C 和 SPI 驱动程序

c - void netif_napi_add

linux-kernel - 对于共享中断线,如何找到要使用的中断处理程序?

linux - 如何在 Linux 上将 Raspberry Pi 的 I2C 时钟配置为 100K

java - 如何使用 eclipse 的注释和 java 来编译我的程序?

linux - 合并两个 CSV,同时解析重复项

linux - 强制内核中的进程休眠 60 秒

multithreading - 追踪内核中神秘的高优先级线程挂起