# 第 7, 8 週課堂問答簡記
:::warning
線上討論: [https://meet.google.com/ean-rqef-zik](https://meet.google.com/ean-rqef-zik) (使用 Google Meet 時,請關閉 YouTube)
:::
## Eddielin0926
[quiz4](https://hackmd.io/@eddielin0926/2022q1-quiz4)
* 在 [sched.h](https://github.com/torvalds/linux/blob/5bfc75d92efd494db37f5c4c173d3639d4772966/include/asm-generic/bitops/sched.h) 中看到 `ffs` 的應用
* TODO: bitmap 到底在 scheduler 中如何使用?
## steven1lung
[quiz4](https://hackmd.io/@steven1lung/linux2022-quiz4)
* 從[最早的 commit](https://github.com/torvalds/linux/commit/e506ea451254ab17e0bf918ca36232fec2a9b10c) 去看,是將 `READ_ONCE` 跟 `WRITE_ONCE` 從 `linux/compiler.h` 移走,直接寫在一個新檔案 rwonce.h 裡。這樣是為了之後讓不同的微處理器架構去定義實作自己的 `READ_ONCE` 巨集
## sternacht
[quiz4](https://hackmd.io/@sternacht09/H1jHtVNGc)
* `ACCESS_ONCE` 巨集的定義
## ganoliz
[quiz4](https://hackmd.io/@ganoliz/Linux2022q1_quiz4)
* user-level thread 示意圖
## Kevin-Shih
[quiz4](https://hackmd.io/@Kevin-Shih/linux2022q1-quiz4)
* [kernel/sched/fair.c](https://github.com/torvalds/linux/blob/master/kernel/sched/fair.c#L196) 程式碼片段中有出現類似的形式 `1 + ilog2(cpus)` ,用於一段更新一些 `tunable parameters` 的函數,其中一種 policy 採用與 cpu 數量成對數關係的預測方式
* TODO: 搭配 Linux CPU 排程器書籍提到的 sysctl_sched_min_granularity 來探討
## kevinshieh0225
[quiz4](https://hackmd.io/@Masamaloka/linux2022-quiz4)
## ccs100203
[quiz4](https://hackmd.io/@cccccs100203/linux2022-quiz4)
* `ACCESS_ONCE` 巨集的定義
## bakudr18
[quiz4](https://hackmd.io/@bakudr18/r1b8zzCbc)
* coroutine
* `READ_ONCE` 巨集的考量
[quiz3](https://hackmd.io/@bakudr18/SkvYGt1-c)
## qwe661234
[fibdrv](https://hackmd.io/@qwe661234/linux2022q1-homework3)
## LJP-TW
[fibdrv](https://hackmd.io/@LJP/Byjtmukf9)
## kdnvt
[fibdrv](https://hackmd.io/@kdnvt/fibdrv)
## kevinshieh0225
[fibdrv](https://hackmd.io/@Masamaloka/linux2022-quiz3)
## yaohwang99
[fibdrv](https://hackmd.io/@yaohwang99/linux2022-fibdrv)
## freshLiver
[quiz4](https://hackmd.io/@freshLiver/linux2022q1-hw4-quiz)
* 若存在比 fls 還要快速的實作方式,就會使用對應的 ilog 方式處理,例如在 `arch/x86/include/asm/bitops.h` 就用 `BSLR` 指令
* Intel64 與 AMD64 的 BSR 指令在 x 為 0 時會有不同的表現
## laneser
[quiz2](https://hackmd.io/@laneser/linux2022-quiz2)
## tinyynoob
[quiz2](https://hackmd.io/@tinyynoob/linux2022q1-quiz2)
## steven1lung
[quiz2](https://hackmd.io/@steven1lung/SJAMABy-9)
## hankluo6
[quiz2](https://hackmd.io/@hankluo6/linux2022-quiz2)