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