linux/linux-5.18.11/Documentation/translations/zh_TW/sparse.txt

92 lines
3.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Chinese translated version of Documentation/dev-tools/sparse.rst
If you have any comment or update to the content, please contact the
original document maintainer directly. However, if you have a problem
communicating in English you can also ask the Chinese maintainer for
help. Contact the Chinese maintainer if this translation is outdated
or if there is a problem with the translation.
Traditional Chinese maintainer: Hu Haowen <src.res@email.cn>
---------------------------------------------------------------------
Documentation/dev-tools/sparse.rst 的繁體中文翻譯
如果想評論或更新本文的內容,請直接聯繫原文檔的維護者。如果你使用英文
交流有困難的話,也可以向繁體中文版維護者求助。如果本翻譯更新不及時或
者翻譯存在問題,請聯繫繁體中文版維護者。
繁體中文版維護者: 胡皓文 Hu Haowen <src.res@email.cn>
繁體中文版翻譯者: 胡皓文 Hu Haowen <src.res@email.cn>
以下爲正文
---------------------------------------------------------------------
Copyright 2004 Linus Torvalds
Copyright 2004 Pavel Machek <pavel@ucw.cz>
Copyright 2006 Bob Copeland <me@bobcopeland.com>
使用 sparse 工具做類型檢查
~~~~~~~~~~~~~~~~~~~~~~~~~~
"__bitwise" 是一種類型屬性,所以你應該這樣使用它:
typedef int __bitwise pm_request_t;
enum pm_request {
PM_SUSPEND = (__force pm_request_t) 1,
PM_RESUME = (__force pm_request_t) 2
};
這樣會使 PM_SUSPEND 和 PM_RESUME 成爲位方式(bitwise)整數(使用"__force"
是因爲 sparse 會抱怨改變位方式的類型轉換,但是這裡我們確實需要強制進行轉
換)。而且因爲所有枚舉值都使用了相同的類型,這裡的"enum pm_request"也將
會使用那個類型做爲底層實現。
而且使用 gcc 編譯的時候,所有的 __bitwise/__force 都會消失,最後在 gcc
看來它們只不過是普通的整數。
坦白來說,你並不需要使用枚舉類型。上面那些實際都可以濃縮成一個特殊的"int
__bitwise"類型。
所以更簡單的辦法只要這樣做:
typedef int __bitwise pm_request_t;
#define PM_SUSPEND ((__force pm_request_t) 1)
#define PM_RESUME ((__force pm_request_t) 2)
現在你就有了嚴格的類型檢查所需要的所有基礎架構。
一個小提醒:常數整數"0"是特殊的。你可以直接把常數零當作位方式整數使用而
不用擔心 sparse 會抱怨。這是因爲"bitwise"(恰如其名)是用來確保不同位方
式類型不會被弄混小尾模式大尾模式cpu尾模式或者其他對他們來說
常數"0"確實是特殊的。
獲取 sparse 工具
~~~~~~~~~~~~~~~~
你可以從 Sparse 的主頁獲取最新的發布版本:
http://www.kernel.org/pub/linux/kernel/people/josh/sparse/
或者,你也可以使用 git 克隆最新的 sparse 開發版本:
git://git.kernel.org/pub/scm/linux/kernel/git/josh/sparse.git
一旦你下載了源碼,只要以普通用戶身份運行:
make
make install
它將會被自動安裝到你的 ~/bin 目錄下。
使用 sparse 工具
~~~~~~~~~~~~~~~~
用"make C=1"命令來編譯內核,會對所有重新編譯的 C 文件使用 sparse 工具。
或者使用"make C=2"命令,無論文件是否被重新編譯都會對其使用 sparse 工具。
如果你已經編譯了內核,用後一種方式可以很快地檢查整個源碼樹。
make 的可選變量 CHECKFLAGS 可以用來向 sparse 工具傳遞參數。編譯系統會自
動向 sparse 工具傳遞 -Wbitwise 參數。