sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/core-api/kernel-apimodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/core-api/kernel-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/core-api/kernel-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/core-api/kernel-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/core-api/kernel-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/core-api/kernel-apimodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhT/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/core-api/kernel-api.rsthKubh field_body)}(h&Documentation/core-api/kernel-api.rst h]h)}(h%Documentation/core-api/kernel-api.rsth]h%Documentation/core-api/kernel-api.rst}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h翻译h]h翻译}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh)}(h\司延腾 Yanteng Si 周彬彬 Binbin Zhou h]h)}(h[司延腾 Yanteng Si 周彬彬 Binbin Zhou h](h司延腾 Yanteng Si <}(hjhhhNhNubh reference)}(hsiyanteng@loongson.cnh]hsiyanteng@loongson.cn}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:siyanteng@loongson.cnuh1jhjubh> 周彬彬 Binbin Zhou <}(hjhhhNhNubj)}(hzhoubinbin@loongson.cnh]hzhoubinbin@loongson.cn}(hj,hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:zhoubinbin@loongson.cnuh1jhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhtarget)}(h.. _cn_kernel-api.rst:h]h}(h]h ]h"]h$]h&]refidcn-kernel-api-rstuh1jXhKhhhhhhubhsection)}(hhh](htitle)}(hLinux内核APIh]hLinux内核API}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jkhjhhhhhhKubjg)}(hhh](jl)}(h列表管理函数h]h列表管理函数}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jkhj{hhhhhKubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj{hhubh)}(hinclude/linux/list.hh]hinclude/linux/list.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj{hhubeh}(h]id1ah ]h"]列表管理函数ah$]h&]uh1jfhjhhhhhhKubjg)}(hhh](jl)}(h基本的C库函数h]h基本的C库函数}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jkhjhhhhhKubh)}(h在编写驱动程序时,一般不能使用C库中的例程。部分函数通常很有用,它们在 下面被列出。这些函数的行为可能会与ANSI定义的略有不同,这些偏差会在文中 注明。h]h在编写驱动程序时,一般不能使用C库中的例程。部分函数通常很有用,它们在 下面被列出。这些函数的行为可能会与ANSI定义的略有不同,这些偏差会在文中 注明。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjg)}(hhh](jl)}(h字符串转换h]h字符串转换}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jkhjhhhhhK ubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjhhubh)}(hlib/vsprintf.ch]hlib/vsprintf.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjhhubh)}(hinclude/linux/kernel.hh]hinclude/linux/kernel.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjhhubh)}(hinclude/linux/kernel.hh]hinclude/linux/kernel.h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjhhubh)}(h lib/kstrtox.ch]h lib/kstrtox.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjhhubh)}(hlib/string_helpers.ch]hlib/string_helpers.c}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hjhhubeh}(h]id2ah ]h"]字符串转换ah$]h&]uh1jfhjhhhhhK ubjg)}(hhh](jl)}(h字符串处理h]h字符串处理}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jkhj<hhhhhK/ubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hj<hhubh)}(hinclude/linux/fortify-string.hh]hinclude/linux/fortify-string.h}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hj<hhubh)}(h lib/string.ch]h lib/string.c}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hj<hhubh)}(hinclude/linux/string.hh]hinclude/linux/string.h}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj<hhubh)}(h mm/util.ch]h mm/util.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hj<hhubeh}(h]id3ah ]h"]字符串处理ah$]h&]uh1jfhjhhhhhK/ubeh}(h]cah ]h"]基本的c库函数ah$]h&]uh1jfhjhhhhhhKubjg)}(hhh](jl)}(h基本的内核库函数h]h基本的内核库函数}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jkhjhhhhhKhjhhubjg)}(hhh](jl)}(h 位运算h]h 位运算}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jkhjhhhhhKAubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjhhubh)}(h0include/asm-generic/bitops/instrumented-atomic.hh]h0include/asm-generic/bitops/instrumented-atomic.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjhhubh)}(h4include/asm-generic/bitops/instrumented-non-atomic.hh]h4include/asm-generic/bitops/instrumented-non-atomic.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjhhubh)}(h.include/asm-generic/bitops/instrumented-lock.hh]h.include/asm-generic/bitops/instrumented-lock.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjhhubeh}(h]id5ah ]h"] 位运算ah$]h&]uh1jfhjhhhhhKAubjg)}(hhh](jl)}(h 位图运算h]h 位图运算}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jkhjhhhhhKLubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjhhubh)}(h lib/bitmap.ch]h lib/bitmap.c}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhjhhubh)}(hinclude/linux/bitmap.hh]hinclude/linux/bitmap.h}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhjhhubh)}(hinclude/linux/bitmap.hh]hinclude/linux/bitmap.h}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThjhhubh)}(hinclude/linux/bitmap.hh]hinclude/linux/bitmap.h}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjhhubh)}(h lib/bitmap.ch]h lib/bitmap.c}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhjhhubh)}(h lib/bitmap.ch]h lib/bitmap.c}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKZhjhhubh)}(hinclude/linux/bitmap.hh]hinclude/linux/bitmap.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK\hjhhubeh}(h]id6ah ]h"] 位图运算ah$]h&]uh1jfhjhhhhhKLubjg)}(hhh](jl)}(h命令行解析h]h命令行解析}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jkhjhhhhhK_ubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahjhhubh)}(h lib/cmdline.ch]h lib/cmdline.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchjhhubeh}(h]id7ah ]h"]命令行解析ah$]h&]uh1jfhjhhhhhK_ubjg)}(hhh](jl)}(h排序h]h排序}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jkhjhhhhhKfubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhjhhubh)}(h lib/sort.ch]h lib/sort.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjhhubh)}(hlib/list_sort.ch]hlib/list_sort.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKlhjhhubeh}(h]id8ah ]h"]排序ah$]h&]uh1jfhjhhhhhKfubjg)}(hhh](jl)}(h 文本检索h]h 文本检索}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jkhjhhhhhKoubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjhhubh)}(hlib/textsearch.ch]hlib/textsearch.c}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjhhubh)}(hlib/textsearch.ch]hlib/textsearch.c}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjhhubh)}(hinclude/linux/textsearch.hh]hinclude/linux/textsearch.h}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjhhubeh}(h]id9ah ]h"] 文本检索ah$]h&]uh1jfhjhhhhhKoubeh}(h]id4ah ]h"]基本的内核库函数ah$]h&]uh1jfhjhhhhhhK` 实例可用于管理 各种时钟信号,例如一个96理例如96MHz的时钟信号,该信号可被用于总线或外设的数据交换,或以 其他方式触发系统硬件中的同步状态机转换。h](hXC时钟框架定义了编程接口,以支持系统时钟树的软件管理。该框架广泛用于系统级芯片(SOC)平 台,以支持电源管理和各种可能需要自定义时钟速率的设备。请注意,这些 “时钟”与计时或实 时时钟(RTC)无关,它们都有单独的框架。这些:c:type: }(hja hhhNhNubhtitle_reference)}(h`struct clk `h]hstruct clk }(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1ji hja ubh 实例可用于管理 各种时钟信号,例如一个96理例如96MHz的时钟信号,该信号可被用于总线或外设的数据交换,或以 其他方式触发系统硬件中的同步状态机转换。}(hja hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMFhjP hhubh)}(hX_通过明确的软件时钟门控来支持电源管理:未使用的时钟被禁用,因此系统不会因为改变不在使用 中的晶体管的状态而浪费电源。在某些系统中,这可能是由硬件时钟门控支持的,其中时钟被门控 而不在软件中被禁用。芯片的部分,在供电但没有时钟的情况下,可能会保留其最后的状态。这种 低功耗状态通常被称为*保留模式*。这种模式仍然会产生漏电流,特别是在电路几何结构较细的情 况下,但对于CMOS电路来说,电能主要是随着时钟翻转而被消耗的。h]hX_通过明确的软件时钟门控来支持电源管理:未使用的时钟被禁用,因此系统不会因为改变不在使用 中的晶体管的状态而浪费电源。在某些系统中,这可能是由硬件时钟门控支持的,其中时钟被门控 而不在软件中被禁用。芯片的部分,在供电但没有时钟的情况下,可能会保留其最后的状态。这种 低功耗状态通常被称为*保留模式*。这种模式仍然会产生漏电流,特别是在电路几何结构较细的情 况下,但对于CMOS电路来说,电能主要是随着时钟翻转而被消耗的。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMLhjP hhubh)}(hX电源感知驱动程序只有在其管理的设备处于活动使用状态时才会启用时钟。此外,系统睡眠状态通 常根据哪些时钟域处于活动状态而有所不同:“待机”状态可能允许从多个活动域中唤醒,而 "mem"(暂停到RAM)状态可能需要更全面地关闭来自高速PLL和振荡器的时钟,从而限制了可能 的唤醒事件源的数量。驱动器的暂停方法可能需要注意目标睡眠状态的系统特定时钟约束。h]hX电源感知驱动程序只有在其管理的设备处于活动使用状态时才会启用时钟。此外,系统睡眠状态通 常根据哪些时钟域处于活动状态而有所不同:“待机”状态可能允许从多个活动域中唤醒,而 “mem”(暂停到RAM)状态可能需要更全面地关闭来自高速PLL和振荡器的时钟,从而限制了可能 的唤醒事件源的数量。驱动器的暂停方法可能需要注意目标睡眠状态的系统特定时钟约束。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMRhjP hhubh)}(h一些平台支持可编程时钟发生器。这些可以被各种外部芯片使用,如其他CPU、多媒体编解码器以 及对接口时钟有严格要求的设备。h]h一些平台支持可编程时钟发生器。这些可以被各种外部芯片使用,如其他CPU、多媒体编解码器以 及对接口时钟有严格要求的设备。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMWhjP hhubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMZhjP hhubh)}(hinclude/linux/clk.hh]hinclude/linux/clk.h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM\hjP hhubeh}(h]id27ah ]h"] 时钟框架ah$]h&]uh1jfhjhhhhhhMDubjg)}(hhh](jl)}(h 同步原语h]h 同步原语}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jkhj hhhhhM_ubjg)}(hhh](jl)}(h读-复制-更新(RCU)h]h读-复制-更新(RCU)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jkhj hhhhhMbubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMdhj hhubh)}(hinclude/linux/rcupdate.hh]hinclude/linux/rcupdate.h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMfhj hhubh)}(hkernel/rcu/tree.ch]hkernel/rcu/tree.c}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhhj hhubh)}(hkernel/rcu/tree_exp.hh]hkernel/rcu/tree_exp.h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhj hhubh)}(hkernel/rcu/update.ch]hkernel/rcu/update.c}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMlhj hhubh)}(hinclude/linux/srcu.hh]hinclude/linux/srcu.h}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMnhj hhubh)}(hkernel/rcu/srcutree.ch]hkernel/rcu/srcutree.c}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMphj hhubh)}(hinclude/linux/rculist_bl.hh]hinclude/linux/rculist_bl.h}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMrhj hhubh)}(hinclude/linux/rculist.hh]hinclude/linux/rculist.h}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMthj hhubh)}(hinclude/linux/rculist_nulls.hh]hinclude/linux/rculist_nulls.h}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMvhj hhubh)}(hinclude/linux/rcu_sync.hh]hinclude/linux/rcu_sync.h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMxhj hhubh)}(hkernel/rcu/sync.ch]hkernel/rcu/sync.c}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMzhj hhubeh}(h]rcuah ]h"]读-复制-更新(rcu)ah$]h&]uh1jfhj hhhhhMbubeh}(h]id28ah ]h"] 同步原语ah$]h&]uh1jfhjhhhhhhM_ubeh}(h](linuxapijeeh ]h"](linux内核apicn_kernel-api.rsteh$]h&]uh1jfhhhhhhhKexpect_referenced_by_name}j jZsexpect_referenced_by_id}jejZsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jkN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh، _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}je]jZasnameids}(j jej j jjjjj9j6jjjjjgjj jjjjjjjbj_jXjUjjjRjOjjjjjjjPjMjjjjjjjjj^j[jVjSjjjjjjjj}jCj@jxjujjj j jI jF j j jM jJ j j j j j j u nametypes}(j j jjj9jjjjjjjjbjXjjRjjjjPjjjjj^jVjjjjjCjxjj jI j jM j j j uh}(jejhj jhjj{jjj6jjj<jgjj jjjjjjjj_jjUjmjj~jOjjjUjjjjjMjjj[jjljjjjj[jjSjjjajjrjjj}jj@jjujFjjj jjF j j jL jJ j j jP j j j j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j KsRparse_messages]transform_messages]hsystem_message)}(hhh]h)}(hhh]h7Hyperlink target "cn-kernel-api-rst" is not referenced.}hjE sbah}(h]h ]h"]h$]h&]uh1hhjB ubah}(h]h ]h"]h$]h&]levelKtypeINFOsourceh،lineKuh1j@ uba transformerN include_log]8Documentation/translations/zh_CN/core-api/kernel-api.rst(NNNNta decorationNhhub.