.. include:: ../disclaimer-zh_CN.rst :Original: Documentation/process/submit-checklist.rst :Translator: - Alex Shi <alexs@kernel.org> - Wu XiangCheng <bobwxc@email.cn> .. _cn_submitchecklist: Linuxĺ†…ć ¸čˇĄä¸ćŹäş¤ćŁ€ćźĄĺŤ• ~~~~~~~~~~~~~~~~~~~~~~~ 如果开发人ĺ‘希望看ĺ°ä»–ä»¬çš„ĺ†…ć ¸čˇĄä¸ćŹäş¤ć›´ĺż«ĺś°č˘«ćŽĄĺŹ—ďĽŚé‚Łäąä»–们应该ĺšä¸€äş›ĺźşćś¬ 的事ć…。 这些é˝ćŻĺś¨ Documentation/translations/zh_CN/process/submitting-patches.rst 和其他有关ćŹäş¤Linuxĺ†…ć ¸čˇĄä¸çš„文档ä¸ćŹäľ›çš„。 1) 如果使用工具,ĺ™ĺŚ…ć‹¬ĺ®šäą‰/声ćŽčŻĄĺ·Ąĺ…·çš„ć–‡ä»¶ă€‚ä¸Ťč¦äľťčµ–其他头文件来引入您使用 的头文件。 2) 干净的编译: a) 使用ĺ适的 ``CONFIG`` 选项 ``=y``ă€``=m`` ĺ’Ś ``=n`` 。没有 ``gcc`` č¦ĺ‘Š/错误,没有链接器č¦ĺ‘Š/错误。 b) 通过 ``allnoconfig`` 〠``allmodconfig`` c) 使用 ``O=builddir`` 时可以ć功编译 d) 任何 Doucmentation/ 下的ĺŹć›´é˝č˝ć功构建且不引入新č¦ĺ‘Š/错误。 用 ``make htmldocs`` ć– ``make pdfdocs`` 检验构建ć…况并修复问é˘ă€‚ 3) 通过使用本地交叉编译工具ć–其他一些构建设施在多个CPU体系结构上构建。 4) PPC64ćŻä¸€ç§ŤĺľĺĄ˝çš„äş¤ĺŹ‰çĽ–čŻ‘ćŁ€ćźĄä˝“çł»ç»“ćž„ďĽŚĺ› ä¸şĺ®ĺ€ľĺ‘于对64ä˝Ťçš„ć•°ä˝żç”¨ć— ç¬¦ĺŹ· 长整型。 5) 按 Documentation/translations/zh_CN/process/coding-style.rst 所述检查您的 补ä¸ćŻĺ¦ä¸şĺ¸¸č§„ć ·ĺĽŹă€‚ĺś¨ćŹäş¤äą‹ĺ‰Ťä˝żç”¨čˇĄä¸ć ·ĺĽŹćŁ€ćźĄĺ™¨ ``scripts/checkpatch.pl`` 检查ćŻĺ¦ćś‰č˝»ĺľ®çš„冲çŞă€‚您应该č˝ĺ¤źĺ¤„ç†ć‚¨çš„补ä¸ä¸ĺ在的所有 违规行为。 6) 任何新的ć–修改过的 ``CONFIG`` 选项é˝ä¸Ťĺş”ćžäą±é…Ťç˝®čŹśĺŤ•ďĽŚĺą¶é»č®¤ä¸şĺ…łé—,除非 ĺ®ä»¬ç¬¦ĺ ``Documentation/kbuild/kconfig-language.rst`` 菜单属性:é»č®¤ĺ€Ľä¸ 记录的例外条件。 7) 所有新的 ``kconfig`` 选项é˝ćś‰ĺ¸®ĺŠ©ć–‡ćś¬ă€‚ 8) 已仔细审查了相关的 ``Kconfig`` 组ĺ。这ĺľéšľç”¨ćµ‹čŻ•ćťĄçş ćŁâ€”—脑力在这里ćŻćś‰ 回报的。 9) 通过 sparse 清查。 ďĽĺŹ‚č§ Documentation/translations/zh_CN/dev-tools/sparse.rst ) 10) 使用 ``make checkstack`` 并修复他们发现的任何问é˘ă€‚ .. note:: ``checkstack`` 并不会ćŽçˇ®ćŚ‡ĺ‡şé—®é˘ďĽŚä˝†ćŻä»»ä˝•ä¸€ä¸Şĺś¨ĺ †ć 上使用超过512 ĺ—节的函数é˝ĺŹŻä»Ąčż›čˇŚć›´ć”ąă€‚ 11) 包括 :ref:`kernel-doc <kernel_doc_zh>` ĺ†…ć ¸ć–‡ćˇŁä»Ąč®°ĺ˝•ĺ…¨ĺ±€ĺ†…ć ¸API。ďĽéť™ć€ 函数不需č¦ďĽŚä˝†äąźĺŹŻä»Ąă€‚ďĽ‰ä˝żç”¨ ``make htmldocs`` ć– ``make pdfdocs`` 检查 :ref:`kernel-doc <kernel_doc_zh>` 并修复任何问é˘ă€‚ 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`` ĺ’Ś ``CONFIG_DEBUG_OBJECTS_RCU_HEAD`` 。 13) 在 ``CONFIG_SMP``, ``CONFIG_PREEMPT`` 开ĺŻĺ’Śĺ…łé—çš„ć…况下é˝čż›čˇŚćž„建和čżčˇŚ 时测试。 14) 所有代ç č·Żĺľ„é˝ĺ·˛ĺś¨ĺŻç”¨ć‰€ćś‰ć»é”检测ďĽlockdep)功č˝çš„ć…况下čżčˇŚă€‚ 15) 所有新的 ``/proc`` 条目é˝č®°ĺ˝•在 ``Documentation/`` 16) ć‰€ćś‰ć–°çš„ĺ†…ć ¸ĺĽ•ĺŻĽĺŹ‚ć•°é˝č®°ĺ˝•在 Documentation/admin-guide/kernel-parameters.rst ä¸ă€‚ 17) 所有新的模块参数é˝č®°ĺ˝•在 ``MODULE_PARM_DESC()`` 18) 所有新的用ć·ç©şé—´ćŽĄĺŹŁé˝č®°ĺ˝•在 ``Documentation/ABI/`` ä¸ă€‚有关详细信ćŻďĽŚ čŻ·ĺŹ‚é… ``Documentation/ABI/README`` 。更改用ć·ç©şé—´ćŽĄĺŹŁçš„čˇĄä¸ĺş”čŻĄćŠ„é€ linux-api@vger.kernel.org。 19) 已通过至少注入slabĺ’Śpageĺ†é…Ťĺ¤±č´Ąčż›čˇŚćŁ€ćźĄă€‚čŻ·ĺŹ‚é… ``Documentation/fault-injection/`` 。 如果新代ç ćŻĺ®žč´¨ć€§çš„,那äąć·»ĺŠ ĺ系统特定的故障注入可č˝ćŻĺ适的。 20) ć–°ć·»ĺŠ çš„ä»Łç 已经用 ``gcc -W`` 编译ďĽä˝żç”¨ ``make EXTRA-CFLAGS=-W`` )。这 将产生大量噪声,但对于查找诸如“č¦ĺ‘ŠďĽšćś‰ç¬¦ĺŹ·ĺ’Ść— ç¬¦ĺŹ·äą‹é—´çš„ćŻ”čľâ€ťäą‹ç±»çš„错误 ĺľćś‰ç”¨ă€‚ 21) 在ĺ®č˘«ĺĺą¶ĺ°-mm补ä¸é›†ä¸äą‹ĺŽčż›čˇŚćµ‹čŻ•ďĽŚä»Ąçˇ®äżťĺ®ä»Ťç„¶ä¸Žć‰€ćś‰ĺ…¶ä»–排éźçš„补ä¸ä»Ą 及VMă€VFSĺ’Śĺ…¶ä»–ĺ系统ä¸çš„ĺ„种更改一起工作。 22) 所有内ĺ屏障ďĽäľ‹ĺ¦‚ ``barrier()``, ``rmb()``, ``wmb()`` )é˝éś€č¦ćşä»Łç 注 释来解释ĺ®ä»¬ćŁĺś¨ć‰§čˇŚçš„ć“Ťä˝śĺŹŠĺ…¶ĺŽźĺ› çš„é€»čľ‘ă€‚ 23) 如果补ä¸ć·»ĺŠ äş†ä»»ä˝•ioctl,那äąäąźč¦ć›´ć–° ``Documentation/userspace-api/ioctl/ioctl-number.rst`` 。 24) 如果修改ĺŽçš„ćşä»Łç äľťčµ–ć–使用与以下 ``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`` )。