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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/pt_BR/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翻译}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhKubh)}(h\司延腾 Yanteng Si 周彬彬 Binbin Zhou h]h)}(h[司延腾 Yanteng Si 周彬彬 Binbin Zhou h](h司延腾 Yanteng Si <}(hj"hhhNhNubh reference)}(hsiyanteng@loongson.cnh]hsiyanteng@loongson.cn}(hj,hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:siyanteng@loongson.cnuh1j*hj"ubh> 周彬彬 Binbin Zhou <}(hj"hhhNhNubj+)}(hzhoubinbin@loongson.cnh]hzhoubinbin@loongson.cn}(hj@hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:zhoubinbin@loongson.cnuh1j*hj"ubh>}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(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-rstuh1jlhKhhhhhhubhsection)}(hhh](htitle)}(hLinux内核APIh]hLinux内核API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|hhhhhKubj{)}(hhh](j)}(h列表管理函数h]h列表管理函数}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hinclude/linux/list.hh]hinclude/linux/list.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]id1ah ]h"]列表管理函数ah$]h&]uh1jzhj|hhhhhKubj{)}(hhh](j)}(h基本的C库函数h]h基本的C库函数}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(h在编写驱动程序时,一般不能使用C库中的例程。部分函数通常很有用,它们在 下面被列出。这些函数的行为可能会与ANSI定义的略有不同,这些偏差会在文中 注明。h]h在编写驱动程序时,一般不能使用C库中的例程。部分函数通常很有用,它们在 下面被列出。这些函数的行为可能会与ANSI定义的略有不同,这些偏差会在文中 注明。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj{)}(hhh](j)}(h字符串转换h]h字符串转换}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK 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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjhhubh)}(h lib/kstrtox.ch]h lib/kstrtox.c}(hj,hhhNhNubah}(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&]uh1jzhjhhhhhK ubj{)}(hhh](j)}(h字符串处理h]h字符串处理}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPhhhhhK/ubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hjPhhubh)}(hinclude/linux/fortify-string.hh]hinclude/linux/fortify-string.h}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjPhhubh)}(h lib/string.ch]h lib/string.c}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjPhhubh)}(hinclude/linux/string.hh]hinclude/linux/string.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjPhhubh)}(h mm/util.ch]h mm/util.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjPhhubeh}(h]id3ah ]h"]字符串处理ah$]h&]uh1jzhjhhhhhK/ubeh}(h]cah ]h"]基本的c库函数ah$]h&]uh1jzhj|hhhhhKubj{)}(hhh](j)}(h基本的内核库函数h]h基本的内核库函数}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKhjhhubj{)}(hhh](j)}(h 位运算h]h 位运算}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKAubh)}(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&]uh1jzhjhhhhhKAubj{)}(hhh](j)}(h 位图运算h]h 位图运算}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'hhhhhKLubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhj'hhubh)}(h lib/bitmap.ch]h lib/bitmap.c}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhj'hhubh)}(hinclude/linux/bitmap.hh]hinclude/linux/bitmap.h}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhj'hhubh)}(hinclude/linux/bitmap.hh]hinclude/linux/bitmap.h}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThj'hhubh)}(hinclude/linux/bitmap.hh]hinclude/linux/bitmap.h}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhj'hhubh)}(h lib/bitmap.ch]h lib/bitmap.c}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhj'hhubh)}(h lib/bitmap.ch]h lib/bitmap.c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKZhj'hhubh)}(hinclude/linux/bitmap.hh]hinclude/linux/bitmap.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK\hj'hhubeh}(h]id6ah ]h"] 位图运算ah$]h&]uh1jzhjhhhhhKLubj{)}(hhh](j)}(h命令行解析h]h命令行解析}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK_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&]uh1jzhjhhhhhK_ubj{)}(hhh](j)}(h排序h]h排序}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKfubh)}(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&]uh1jzhjhhhhhKfubj{)}(hhh](j)}(h 文本检索h]h 文本检索}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(hhhhhKoubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhj(hhubh)}(hlib/textsearch.ch]hlib/textsearch.c}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshj(hhubh)}(hlib/textsearch.ch]hlib/textsearch.c}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhj(hhubh)}(hinclude/linux/textsearch.hh]hinclude/linux/textsearch.h}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhj(hhubeh}(h]id9ah ]h"] 文本检索ah$]h&]uh1jzhjhhhhhKoubeh}(h]id4ah ]h"]基本的内核库函数ah$]h&]uh1jzhj|hhhhhK` 实例可用于管理 各种时钟信号,例如一个96理例如96MHz的时钟信号,该信号可被用于总线或外设的数据交换,或以 其他方式触发系统硬件中的同步状态机转换。h](hXC时钟框架定义了编程接口,以支持系统时钟树的软件管理。该框架广泛用于系统级芯片(SOC)平 台,以支持电源管理和各种可能需要自定义时钟速率的设备。请注意,这些 “时钟”与计时或实 时时钟(RTC)无关,它们都有单独的框架。这些:c:type: }(hju hhhNhNubhtitle_reference)}(h`struct clk `h]hstruct clk }(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j} hju ubh 实例可用于管理 各种时钟信号,例如一个96理例如96MHz的时钟信号,该信号可被用于总线或外设的数据交换,或以 其他方式触发系统硬件中的同步状态机转换。}(hju hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMFhjd hhubh)}(hX_通过明确的软件时钟门控来支持电源管理:未使用的时钟被禁用,因此系统不会因为改变不在使用 中的晶体管的状态而浪费电源。在某些系统中,这可能是由硬件时钟门控支持的,其中时钟被门控 而不在软件中被禁用。芯片的部分,在供电但没有时钟的情况下,可能会保留其最后的状态。这种 低功耗状态通常被称为*保留模式*。这种模式仍然会产生漏电流,特别是在电路几何结构较细的情 况下,但对于CMOS电路来说,电能主要是随着时钟翻转而被消耗的。h]hX_通过明确的软件时钟门控来支持电源管理:未使用的时钟被禁用,因此系统不会因为改变不在使用 中的晶体管的状态而浪费电源。在某些系统中,这可能是由硬件时钟门控支持的,其中时钟被门控 而不在软件中被禁用。芯片的部分,在供电但没有时钟的情况下,可能会保留其最后的状态。这种 低功耗状态通常被称为*保留模式*。这种模式仍然会产生漏电流,特别是在电路几何结构较细的情 况下,但对于CMOS电路来说,电能主要是随着时钟翻转而被消耗的。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMLhjd hhubh)}(hX电源感知驱动程序只有在其管理的设备处于活动使用状态时才会启用时钟。此外,系统睡眠状态通 常根据哪些时钟域处于活动状态而有所不同:“待机”状态可能允许从多个活动域中唤醒,而 "mem"(暂停到RAM)状态可能需要更全面地关闭来自高速PLL和振荡器的时钟,从而限制了可能 的唤醒事件源的数量。驱动器的暂停方法可能需要注意目标睡眠状态的系统特定时钟约束。h]hX电源感知驱动程序只有在其管理的设备处于活动使用状态时才会启用时钟。此外,系统睡眠状态通 常根据哪些时钟域处于活动状态而有所不同:“待机”状态可能允许从多个活动域中唤醒,而 “mem”(暂停到RAM)状态可能需要更全面地关闭来自高速PLL和振荡器的时钟,从而限制了可能 的唤醒事件源的数量。驱动器的暂停方法可能需要注意目标睡眠状态的系统特定时钟约束。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMRhjd hhubh)}(h一些平台支持可编程时钟发生器。这些可以被各种外部芯片使用,如其他CPU、多媒体编解码器以 及对接口时钟有严格要求的设备。h]h一些平台支持可编程时钟发生器。这些可以被各种外部芯片使用,如其他CPU、多媒体编解码器以 及对接口时钟有严格要求的设备。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMWhjd hhubh)}(h该API在以下内核代码中:h]h该API在以下内核代码中:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMZhjd hhubh)}(hinclude/linux/clk.hh]hinclude/linux/clk.h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM\hjd hhubeh}(h]id27ah ]h"] 时钟框架ah$]h&]uh1jzhj|hhhhhMDubj{)}(hhh](j)}(h 同步原语h]h 同步原语}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhhhM_ubj{)}(hhh](j)}(h读-复制-更新(RCU)h]h读-复制-更新(RCU)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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}(hj1 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}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMnhj hhubh)}(hkernel/rcu/srcutree.ch]hkernel/rcu/srcutree.c}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMphj hhubh)}(hinclude/linux/rculist_bl.hh]hinclude/linux/rculist_bl.h}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMrhj hhubh)}(hinclude/linux/rculist.hh]hinclude/linux/rculist.h}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMthj hhubh)}(hinclude/linux/rculist_nulls.hh]hinclude/linux/rculist_nulls.h}(hj 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&]uh1jzhj hhhhhMbubeh}(h]id28ah ]h"] 同步原语ah$]h&]uh1jzhj|hhhhhM_ubeh}(h](linuxapijyeh ]h"](linux内核apicn_kernel-api.rsteh$]h&]uh1jzhhhhhhhKexpect_referenced_by_name}j jnsexpect_referenced_by_id}jyjnsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jN 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}jy]jnasnameids}(j jyj j jjjjjMjJjjj~j{j$j!jjjjj%j"jvjsjljijjjfjcjjjjj/j,jdjajjjjjjjjjrjojjjgjjjjjjjjjWjTjjjjj( j% j] jZ j, j) ja j^ j j j j j j u nametypes}(j j jjjMjj~j$jjj%jvjljjfjjj/jdjjjjjrjjjjjjjWjjj( j] j, ja j j j uh}(jyj|j j|jjjjjJjjjPj{jj!jjj'jjj"jjsj(jijjjjcjjjijjj,jjaj2jjojjjjjjjoj jgj*jjujjjjjjjTjjjZjjj% jjZ j+ j) j` j^ j/ j jd 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.}hjY sbah}(h]h ]h"]h$]h&]uh1hhjV ubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKuh1jT uba transformerN include_log]8Documentation/translations/zh_CN/core-api/kernel-api.rst(NNNNta decorationNhhub.