5 分配接口allocate_resource()
在find_resource()函数的基础上,函数allocate_resource()实现:在一颗资源树中分配一条指定大小的、且包含在指定区域[min,max]中的、未使用资源区域。其源代码如下:
|
6 获取资源的名称列表
函数get_resource_list()用于获取根节点root的子资源名字列表。该函数主要用来支持/proc/文档系统(比如实现proc/ioports文档和/proc/iomem文档)。其源代码如下:
|
能够看出,该函数主要通过调用内部静态函数do_resource_list()来实现其功能,其源代码如下:
|
函数do_resource_list()主要通过一个while{}循环连同递归嵌套调用来实现,较为简单,这里就不在周详解释了。
管理I/O Region资源
Linux将基于I/O映射方式的I/O端口和基于内存映射方式的I/O端口资源统称为“I/O区域”(I/O Region)。I/O Region仍然是一种I/O资源,因此他仍然能够用resource结构类型来描述。下面我们就来看看Linux是如何管理I/O Region的。
1 I/O Region的分配
在函数__request_resource()的基础上,Linux实现了用于分配I/O区域的函数__request_region(),如下:




