---
title: 2023q1 Homework4 (quiz4)
tags: Linux核心實作
---
# 2023q1 Homework4 ([quiz4](https://hackmd.io/@sysprog/linux2023-quiz4))
contributed by < [`lorian0738`](https://github.com/lorian0738) >
## 紅黑樹
### 疑問
* #### [紅黑樹的移除](https://hackmd.io/@sysprog/linux-rbtree#%E7%B4%85%E9%BB%91%E6%A8%B9%E7%9A%84%E7%A7%BB%E9%99%A4)
有許多 Case,但看不懂,或許會有完整程式碼?
* #### [紅黑樹節點](https://hackmd.io/@sysprog/linux-rbtree#%E7%B4%85%E9%BB%91%E6%A8%B9%E7%AF%80%E9%BB%9E)
為何 struct rb_node 對齊 sizeof(long) 後,指標最低 2 個位元就會沒有使用到?
### 小筆記
* [container_of or rb_entry](https://hackmd.io/@sysprog/linux-rbtree#container_of-or-rb_entry)
這部分提到使用 container_of 或 entry 的情形,第一次作業這邊也用得有點混亂
1. container_of:存取節點的 container structure 時
2. XXXX_entry:存取節點 container structure 裡的 member
## [前置處理器應用篇](https://hackmd.io/@sysprog/c-preprocessor)
### 小筆記
* 前置處理器 = 展開的操作
* 產生前置處理器的 code
`gcc -E -P objects.c > out.c`
其中 -E 表示在前置處理器的時候停下來
-P 表示直接展開 prototype 那些資訊
* 找某份程式碼是被誰用到
`grep "use-models.h" *`
* 了解專案規模
1. 先清除 output 檔案
1. 再用 make clean 把不必要的東西清除
1. `cloc .`:其中 cloc 用來計算規模, . 則表示在當前目錄下執行
## 測驗 1
## 測驗 2
## 測驗 3