Linux 核心轉向 kmalloc_obj 以改善記憶體配置
科技
⚠ 单一来源
2h ago

Linux 核心轉向 kmalloc_obj 以改善記憶體配置

AI综合 · 已去除偏见 · 仅事实

林納斯·托瓦茲已將一項重要的程式碼變更合併到 Linux 7.3-rc2 核心中,將更多 `kmalloc()` 函數呼叫轉換為較新的 `kmalloc_obj()` 函數族。這項由 Linux 開發者 Kees Cook 領導的、全樹範圍的努力旨在改善核心內的記憶體配置。

透過 Coccinelle 驅動的腳本完成的轉換影響了數百個檔案和超過 600 行程式碼。它解決了先前未完成的轉向 `kmalloc_obj()` 的問題,並擴大了其自 Linux 7.0 推出以來的用途。`kmalloc_obj()` 函數比 `kmalloc()` 具有多項優勢,包括無需 `sizeof()` 和類型名稱,實現已配置類型的內部檢查,並為未來的增強功能(例如強化和對齊感知選擇)鋪平道路。

根據今年初推出 `kmalloc_obj()` 函數的提交訊息,此變更取代了常見的配置慣用語。例如,`ptr = kmalloc(sizeof(*ptr), gfp);` 變成 `ptr = kmalloc_obj(*ptr, gfp);`。主要優點是無需 `sizeof()` 和類型名稱,同時強制執行指派類型——這些函數會傳回第一個引數類型的指標。類型名稱仍可用於間接指派。此外,新的函數允許使用 `__auto_type` 宣告變數,例如 `__auto_type ptr = kmalloc_obj(struct foo, gfp);`。

有帮助吗?

閱讀原始報道

💬 评论

📜 评论政策