今天学习平台设备驱动时,查看内核获取资源函数的源代码如下/drivers/base/platform.c:
struct resource *platform_get_resource(struct platform_device *dev,
unsigned int type, unsigned int num)
{
int i;
for (i = 0; i < dev->num_resources; i++) {
struct resource *r = &dev->resource[i];
if (type == resource_type(r) && num-- == 0)
return r;
}
return NULL;
}
如上红色标记部分,不明白为什么在for()循环内部来创建指针变量,这样若有多次循环的话,就会重复创建同样的变量了?是不是应该改为:
struct resource *platform_get_resource(struct platform_device *dev,
unsigned int type, unsigned int num)
{
int i;
struct resource *r;
for (i = 0; i < dev->num_resources; i++) {
r = &dev->resource[i];
if (type == resource_type(r) && num-- == 0)
return r;
}
return NULL;
}