max890808

@max890808

Joined on Nov 30, 2022

  • contributed by < max890808 > 自我檢查清單 [X] 自己的實體電腦運作 GNU/Linux [ ] 閱讀〈Linux 核心模組運作原理〉並對照 Linux 核心原始程式碼 (v6.1+),解釋 insmod 後,Linux 核心模組的符號 (symbol) 如何被 Linux 核心找到 (使用 List API)、MODULE_LICENSE 巨集指定的授權條款又對核心有什麼影響 (GPL 與否對於可用的符號列表有關),以及藉由 strace 追蹤 Linux 核心的掛載,涉及哪些系統呼叫和子系統? 解釋 insmod 後,Linux 核心模組的符號 (symbol) 如何被 Linux 核心找到 (使用 List API) 使用 strace 追蹤執行 insmod 的過程會有哪些系統呼叫被執行,可以發現會呼叫 finit_module,接著呼叫 idempotent_init_module 該函式當中還會呼叫 init_module_from_file ,在 init_module_from_file 才真正呼叫到 load_module。 在 kernel/module/main.c 可以找到 find_symbol 函式,其使用 List API list_for_each_entry_rcu 和 find_exported_symbol_in_section 來查找模組的符號。
     Like  Bookmark
  • contributed by < max890808 >
     Like  Bookmark
  • contributed by < max890808 > :::danger 你的洞見呢? ::: 測驗題改進 紀錄閱讀〈因為自動飲料機而延畢的那一年〉的啟發 資工系的學生不會寫程式,機械系的學生不會做機械
     Like  Bookmark
  • contributed by < max890808 > 第一周測驗題 測驗一 參考 Optimized QuickSort — C Implementation (Non-Recursive) 實作非遞迴 (non-recursive; iterative) 的快速排序法 解釋程式碼運作原理 node_t *begin[max_level], *end[max_level]; node_t *left = NULL, *right = NULL; begin 和 end 用來紀錄比較的範圍
     Like  Bookmark
  • contributed by < max890808 > Reviewed by mesohandsome 敘述函式新增或修改什麼部分,可以貼出對應的關鍵程式碼,可善用 diff。 - strcpy() + strncpy() 有些 commit 沒有連結到正確的 github,例如 q_insert_head 實作中的這兩個 commit 8354a3d, commit 39a124d
     Like 2 Bookmark