内核代码(获取资源的)

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;

}

EXPORT_SYMBOL_GPL(platform_get_resource);


想知道里面的num在这个代码里的含义

如果num==0能匹配,并且num是通过i++来提取的,也就是说只有第一次才能获取正确的,资源,那for(i=0;i<num_resource;i++)还有啥遍历的意义

请先 登录 后评论

2 个回答

星星之火 - 嵌入式工程师
擅长:答疑助手

定义的资源可能有很多类 比如IORESOURCE_IO、IORESOURCE_IRQ等等,这些对应着第二个参数type字段。

同时很多类资源中可能IORESOURCE_IRQ类型的资源有多个,分布在资源数组的1、2、5位置。此时想获取类型为IORESOURCE_IRQ的资源。那么使用一个for循环

for(i=0;i<3;i++){

XXX = platform_get_resource(pdev,IORESOURCE_IRQ,i);

}

即可获得类型为IORESOURCE_IRQ的前3个资源,及资源数组的1、2、5位置的资源会一次付给XXX。



如果还不清楚你可以自己写一个含有多个资源的数组,里面有多个类型的资源,然后获取同一类型的所有资源

请先 登录 后评论
张工 - 嵌入式

1,2,5位置的资源

这个1,2,5是怎么来的?

还有程序里面的num?

请先 登录 后评论
  • 2 关注
  • 0 收藏,155 浏览
  • 张工 提出于 2020-06-23 17:27