「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.