「BUAA OS Lab2 Thinking」Thinking2.3详解
Thinking2.3引用的函数与定义比较多且散乱,以下从题目入手逐层展开:
通过pmap.h
可以看到Page结构如下
1 | struct Page { |
又知道Page_LIST_entry_t
在宏定义typedef LIST_ENTRY(Page) Page_LIST_entry_t;
中声明,查看LIST_ENTRY
在queue.h
中声明如下:
1 |
|
到此为止,可以确定Page
结构体的展开结构如下:
1 | struct Page { |
查看queue.h
中的LIST_HEAD
声明如下:
占老师锐评:这下工厂模式了
1 |
|
因此在pmap.h
中声明的IST_HEAD(Page_list, Page)
完成了Page_list
的构建如下:
1 | struct Page_list { |
再将Page
结构体展开即可得:
1 | struct Page_list { |
Tip:以上内容得益于占老师的大力支持\zry/\zry/\zry/
This is copyright.