.. SPDX-License-Identifier: GPL-2.0 .. include:: ../disclaimer-zh_TW.rst :Original: :ref:`Documentation/process/submit-checklist.rst <submitchecklist>` :Translator: Alex Shi <alex.shi@linux.alibaba.com> Hu Haowen <src.res@email.cn> .. _tw_submitchecklist: Linuxå…§æ ¸è£œä¸æ交清單 ~~~~~~~~~~~~~~~~~~~~~ å¦‚æžœé–‹ç™¼äººå“¡å¸Œæœ›çœ‹åˆ°ä»–å€‘çš„å…§æ ¸è£œä¸æ交更快地被接å—,那麼他們應該åšä¸€äº›åŸºæœ¬ 的事情。 這些都是在 :ref:`Documentation/translations/zh_TW/process/submitting-patches.rst <tw_submittingpatches>` 和其他有關æ交Linuxå…§æ ¸è£œä¸çš„文檔ä¸æ供的。 1) 如果使用工具,則包括定義/è²æ˜Žè©²å·¥å…·çš„文件。ä¸è¦ä¾è³´æ–¼å…¶ä»–é 文件拉入您使用 çš„é 文件。 2) 乾淨的編è¯ï¼š a) 使用é©ç”¨æˆ–修改的 ``CONFIG`` é¸é … ``=y``ã€``=m`` å’Œ ``=n`` 。沒有GCC è¦å‘Š/錯誤,沒有連çµå™¨è¦å‘Š/錯誤。 b) 通éŽallnoconfigã€allmodconfig c) 使用 ``O=builddir`` 時å¯ä»¥æˆåŠŸç·¨è¯ 3) 通éŽä½¿ç”¨æœ¬åœ°äº¤å‰ç·¨è¯å·¥å…·æˆ–å…¶ä»–ä¸€äº›æ§‹å»ºå ´åœ¨å¤šå€‹CPU體系çµæ§‹ä¸Šæ§‹å»ºã€‚ 4) PPC64是一種很好的交å‰ç·¨è¯æª¢æŸ¥é«”ç³»çµæ§‹ï¼Œå› 爲它傾å‘æ–¼å°64ä½çš„數使用無符號 長整型。 5) 如下所述 :ref:`Documentation/translations/zh_TW/process/coding-style.rst <tw_codingstyle>`. 檢查您的補ä¸æ˜¯å¦çˆ²å¸¸è¦æ¨£å¼ã€‚在æ交( ``scripts/check patch.pl`` )之å‰ï¼Œ 使用補ä¸æ¨£å¼æª¢æŸ¥å™¨æª¢æŸ¥æ˜¯å¦æœ‰è¼•å¾®çš„è¡çªã€‚æ‚¨æ‡‰è©²èƒ½å¤ è™•ç†æ‚¨çš„補ä¸ä¸å˜åœ¨çš„所有 é•è¦è¡Œçˆ²ã€‚ 6) 任何新的或修改éŽçš„ ``CONFIG`` é¸é …都ä¸æœƒå¼„é«’é…ç½®èœå–®ï¼Œä¸¦é»˜èªçˆ²é—œé–‰ï¼Œé™¤éž å®ƒå€‘ç¬¦åˆ ``Documentation/kbuild/kconfig-language.rst`` ä¸è¨˜éŒ„的異常æ¢ä»¶, èœå–®å±¬æ€§ï¼šé»˜èªå€¼. 7) 所有新的 ``kconfig`` é¸é …都有幫助文本。 8) 已仔細審查了相關的 ``Kconfig`` 組åˆã€‚這很難用測試來糾æ£â€”—腦力在這裡是有 å›žå ±çš„ã€‚ 9) 用 sparse 檢查乾淨。 10) 使用 ``make checkstack`` å’Œ ``make namespacecheck`` 並修復他們發ç¾çš„任何 å•é¡Œã€‚ .. note:: ``checkstack`` 並沒有明確指出å•é¡Œï¼Œä½†æ˜¯ä»»ä½•ä¸€å€‹åœ¨å †æ£§ä¸Šä½¿ç”¨è¶…éŽ512 å—節的函數都å¯ä»¥é€²è¡Œæ›´æ”¹ã€‚ 11) 包括 :ref:`kernel-doc <kernel_doc>` å…§æ ¸æ–‡æª”ä»¥è¨˜éŒ„å…¨å±€å…§æ ¸API。(éœæ…‹å‡½æ•¸ ä¸éœ€è¦ï¼Œä½†ä¹Ÿå¯ä»¥ã€‚)使用 ``make htmldocs`` 或 ``make pdfdocs`` 檢查 :ref:`kernel-doc <kernel_doc>` 並修復任何å•é¡Œã€‚ 12) 通éŽä»¥ä¸‹é¸é …åŒæ™‚啓用的測試 ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``, ``CONFIG_DEBUG_SLAB``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``, ``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP``, ``CONFIG_PROVE_RCU`` and ``CONFIG_DEBUG_OBJECTS_RCU_HEAD`` 13) 已經éŽæ§‹å»ºå’Œé‹è¡Œæ™‚測試,包括有或沒有 ``CONFIG_SMP``, ``CONFIG_PREEMPT``. 14) 如果補ä¸ç¨‹åºå½±éŸ¿IO/ç£ç¢Ÿç‰ï¼šä½¿ç”¨æˆ–ä¸ä½¿ç”¨ ``CONFIG_LBDAF`` 進行測試。 15) 所有代碼路徑都已在啓用所有lockdep功能的情æ³ä¸‹é‹è¡Œã€‚ 16) 所有新的/procæ¢ç›®éƒ½è¨˜éŒ„在 ``Documentation/`` 17) æ‰€æœ‰æ–°çš„å…§æ ¸å¼•å°Žåƒæ•¸éƒ½è¨˜éŒ„在 Documentation/admin-guide/kernel-parameters.rst ä¸ã€‚ 18) 所有新的模塊åƒæ•¸éƒ½è¨˜éŒ„在 ``MODULE_PARM_DESC()`` 19) 所有新的用戶空間接å£éƒ½è¨˜éŒ„在 ``Documentation/ABI/`` ä¸ã€‚有關詳細信æ¯ï¼Œ è«‹åƒé–± ``Documentation/ABI/README`` 。更改用戶空間接å£çš„補ä¸æ‡‰è©²æŠ„é€ linux-api@vger.kernel.org。 20) 已通éŽè‡³å°‘注入slabå’Œpage分é…失敗進行檢查。請åƒé–± ``Documentation/fault-injection/`` å¦‚æžœæ–°ä»£ç¢¼æ˜¯å¯¦è³ªæ€§çš„ï¼Œé‚£éº¼æ·»åŠ å系統特定的故障注入å¯èƒ½æ˜¯åˆé©çš„。 21) æ–°æ·»åŠ çš„ä»£ç¢¼å·²ç¶“ç”¨ ``gcc -W`` ç·¨è¯ï¼ˆä½¿ç”¨ ``make EXTRA-CFLAGS=-W`` )。這 將產生大é‡å™ªè²ï¼Œä½†å°æ–¼æŸ¥æ‰¾è«¸å¦‚「è¦å‘Šï¼šæœ‰ç¬¦è™Ÿå’Œç„¡ç¬¦è™Ÿä¹‹é–“的比較ã€ä¹‹é¡žçš„錯誤 很有用。 22) 在它被åˆä½µåˆ°-mm補ä¸é›†ä¸ä¹‹å¾Œé€²è¡Œæ¸¬è©¦ï¼Œä»¥ç¢ºä¿å®ƒä»ç„¶èˆ‡æ‰€æœ‰å…¶ä»–排隊的補ä¸ä»¥ åŠVMã€VFS和其他å系統ä¸çš„å„種更改一起工作。 23) 所有內å˜å±éšœä¾‹å¦‚ ``barrier()``, ``rmb()``, ``wmb()`` 都需è¦åŽŸå§‹ç¢¼ä¸çš„注 釋來解釋它們æ£åœ¨åŸ·è¡Œçš„æ“作åŠå…¶åŽŸå› çš„é‚輯。 24) 如果補ä¸æ·»åŠ 了任何ioctl,那麼也è¦æ›´æ–° ``Documentation/userspace-api/ioctl/ioctl-number.rst`` 25) 如果修改後的原始碼ä¾è³´æˆ–使用與以下 ``Kconfig`` ç¬¦è™Ÿç›¸é—œçš„ä»»ä½•å…§æ ¸API或 功能,則在ç¦ç”¨ç›¸é—œ ``Kconfig`` 符號和/或 ``=m`` (如果該é¸é …å¯ç”¨ï¼‰çš„æƒ…æ³ ä¸‹æ¸¬è©¦ä»¥ä¸‹å¤šå€‹æ§‹å»º[並éžæ‰€æœ‰é€™äº›éƒ½åŒæ™‚å˜åœ¨ï¼Œåªæ˜¯å®ƒå€‘çš„å„種/隨機組åˆ]: ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``, ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``, ``CONFIG_NET``, ``CONFIG_INET=n`` (但是後者伴隨 ``CONFIG_NET=y``).