request_resource
2024-09-29 15:27:08
1.全局变量
resource结构体定义如下,指针parent、sibling、child用于构建树状结构。
struct resource {
resource_size_t start;
resource_size_t end;
const char *name;
unsigned long flags;
struct resource *parent, *sibling, *child;
};
用到的全局变量
/arch/arm/kernel/setup.c/
static struct resource mem_res[] = {
{
.name = "Video RAM",
.start = ,
.end = ,
.flags = IORESOURCE_MEM
},
{
.name = "Kernel text",
.start = ,
.end = ,
.flags = IORESOURCE_MEM
},
{
.name = "Kernel data",
.start = ,
.end = ,
.flags = IORESOURCE_MEM
}
}; #define video_ram mem_res[0]
#define kernel_code mem_res[1]
#define kernel_data mem_res[2]
2.request_resource()
int request_resource(struct resource *root, struct resource *new)
-->__request_resource(root, new);//按地址升序排列
/* Return the conflict entry if you can't request it */
static struct resource * __request_resource(struct resource *root, struct resource *new)
{
resource_size_t start = new->start;
resource_size_t end = new->end;
struct resource *tmp, **p; if (end < start)
return root;
if (start < root->start)
return root;
if (end > root->end)
return root;
p = &root->child;
for (;;) {
tmp = *p;
if (!tmp || tmp->start > end) {
new->sibling = tmp;
*p = new;
new->parent = root;
return NULL;
}
p = &tmp->sibling;
if (tmp->end < start)
continue;
return tmp;
}
}
最新文章
- The specified module could not be found
- 【BZOJ】3542: DZY Loves March
- 关于初级java面试问题的一些整理 (部分转自他人)
- Zookeeper 3.4.6 Client端流程粗略梳理
- 变色龙安装程序 Chameleon Install 2.2 svn 2281发布
- org.unsaved transient instance - save the transient instance before flushing: bug解决方案
- mysql---union和左连接的两倒面试题
- jquery 之选择符
- 字符串的encode与decode解决乱码问题
- jsp当参数为空的时候默认显示值
- web项目编译出错时,原因之一,可能是build path 中order and Export引起
- 【CSS】div父容器根据子容器大小自适应
- Linux 系统裁剪笔记 软盘2
- linux c ---raise 使用范例的代码
- Spring AOP功能和目标
- HashMap 源码分析
- 从前端中的IOC理念理解koa中的app.use()
- LeetCode 232:Implement Queue using Stacks
- LICEcap方便快捷制作gif图片的工具
- MATLAB 统计数据并画出统计直方图