我正在研究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/

10-12 14:14