我是内核驱动程序编程的新手,想了解几个方面。
在以下代码中来自http://lxr.free-electrons.com/source/drivers/i2c/busses/i2c-ocores.c?v=3.19
static int ocores_i2c_probe(struct platform_device *pdev)
{
struct ocores_i2c *i2c;
i2c = devm_kzalloc(&pdev->dev, sizeof(*i2c), GFP_KERNEL);
}
- pdev 是指向平台设备的指针。pdev 指向的结构的内容在平台设备初始化时已经创建,驱动核心将把该信息传递给这个探测函数。?? 这与 pci dev 结构相同,其中驱动程序核心正在传递它在探测期间识别的 pci_dev 以供驱动程序使用?我的理解对吗?
- 我不清楚devm_kzalloc的参数。第 763 行http://lxr.free-electrons.com/source/drivers/base/devres.c?v=3.19#L774的“分配内存的设备”是什么意思 ?归根结底,我们只需要在大小为 struct ocores_i2c 的内核中分配内存。第一个参数是否用作跟踪机制以在以后自动释放它(基于阅读 devres 内核文档)?
- devm_kzalloc 的返回值是指向内核中新分配的大小为 ocores_i2c 的内存的指针。如果是这种情况,devm_kzalloc 的第二个参数不应该是 sizeof(struct ocores_i2c) 而不是 sizeof(*i2c) 吗?