isphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/PCI/sysfs-pcimodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/zh_TW/PCI/sysfs-pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/it_IT/PCI/sysfs-pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/ja_JP/PCI/sysfs-pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/ko_KR/PCI/sysfs-pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/sp_SP/PCI/sysfs-pcimodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhN/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/PCI/sysfs-pci.rsthKubhnote)}(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&]uh1hhhhhhKubh field_body)}(h Documentation/PCI/sysfs-pci.rst h]h)}(hDocumentation/PCI/sysfs-pci.rsth]hDocumentation/PCI/sysfs-pci.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 h]h)}(h,司延腾 Yanteng Si 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>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h校译h]h校译}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhhhKubh)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjPubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhsection)}(hhh](htitle)}(h 通过sysfs访问PCI设备资源h]h 通过sysfs访问PCI设备资源}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjxhhhhhKubh)}(hsysfs,通常挂载在/sys,在支持它的平台上提供对PCI资源的访问。例如,一个特定的总线可能看起 来像这样::h]hsysfs,通常挂载在/sys,在支持它的平台上提供对PCI资源的访问。例如,一个特定的总线可能看起 来像这样:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjxhhubh literal_block)}(hX>/sys/devices/pci0000:17 |-- 0000:17:00.0 | |-- class | |-- config | |-- device | |-- enable | |-- irq | |-- local_cpus | |-- remove | |-- resource | |-- resource0 | |-- resource1 | |-- resource2 | |-- revision | |-- rom | |-- subsystem_device | |-- subsystem_vendor | `-- vendor `-- ...h]hX>/sys/devices/pci0000:17 |-- 0000:17:00.0 | |-- class | |-- config | |-- device | |-- enable | |-- irq | |-- local_cpus | |-- remove | |-- resource | |-- resource0 | |-- resource1 | |-- resource2 | |-- revision | |-- rom | |-- subsystem_device | |-- subsystem_vendor | `-- vendor `-- ...}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjxhhubh)}(hXP最上面的元素描述了PCI域和总线号码。在这种情况下,域号是0000,总线号是17(两个值都是十六进制)。 这个总线在0号插槽中包含一个单一功能的设备。为了方便起见,我们复制了域和总线的编号。在设备目录 下有几个文件,每个文件都有自己的功能。h]hXP最上面的元素描述了PCI域和总线号码。在这种情况下,域号是0000,总线号是17(两个值都是十六进制)。 这个总线在0号插槽中包含一个单一功能的设备。为了方便起见,我们复制了域和总线的编号。在设备目录 下有几个文件,每个文件都有自己的功能。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjxhhubh block_quote)}(hXj=================== ===================================================== 文件 功能 =================== ===================================================== class PCI级别 (ascii, ro) config PCI配置空间 (binary, rw) device PCI设备 (ascii, ro) enable 设备是否被启用 (ascii, rw) irq IRQ编号 (ascii, ro) local_cpus 临近CPU掩码(cpumask, ro) remove 从内核的列表中删除设备 (ascii, wo) resource PCI资源主机地址 (ascii, ro) resource0..N PCI资源N,如果存在的话 (binary, mmap, rw\ [1]_) resource0_wc..N_wc PCI WC映射资源N,如果可预取的话 (binary, mmap) revision PCI修订版 (ascii, ro) rom PCI ROM资源,如果存在的话 (binary, ro) subsystem_device PCI子系统设备 (ascii, ro) subsystem_vendor PCI子系统供应商 (ascii, ro) vendor PCI供应商 (ascii, ro) =================== ===================================================== h]htable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthK5uh1jhjubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(h文件h]h文件}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h功能h]h功能}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubhtbody)}(hhh](j)}(hhh](j)}(hhh]h)}(hclassh]hclass}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hj+ubah}(h]h ]h"]h$]h&]uh1jhj(ubj)}(hhh]h)}(hPCI级别 (ascii, ro)h]hPCI级别 (ascii, ro)}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjBubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(hconfigh]hconfig}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hjbubah}(h]h ]h"]h$]h&]uh1jhj_ubj)}(hhh]h)}(hPCI配置空间 (binary, rw)h]hPCI配置空间 (binary, rw)}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hjyubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hPCI设备 (ascii, ro)h]hPCI设备 (ascii, ro)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(henableh]henable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h!设备是否被启用 (ascii, rw)h]h!设备是否被启用 (ascii, rw)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(hirqh]hirq}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hIRQ编号 (ascii, ro)h]hIRQ编号 (ascii, ro)}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(h local_cpush]h local_cpus}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hj>ubah}(h]h ]h"]h$]h&]uh1jhj;ubj)}(hhh]h)}(h临近CPU掩码(cpumask, ro)h]h临近CPU掩码(cpumask, ro)}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjUubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(hremoveh]hremove}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjuubah}(h]h ]h"]h$]h&]uh1jhjrubj)}(hhh]h)}(h-从内核的列表中删除设备 (ascii, wo)h]h-从内核的列表中删除设备 (ascii, wo)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(hresourceh]hresource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h!PCI资源主机地址 (ascii, ro)h]h!PCI资源主机地址 (ascii, ro)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(h resource0..Nh]h resource0..N}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h8PCI资源N,如果存在的话 (binary, mmap, rw\ [1]_)h](h3PCI资源N,如果存在的话 (binary, mmap, rw }(hjhhhNhNubhfootnote_reference)}(h[1]_h]h1}(hjhhhNhNubah}(h]id1ah ]h"]h$]h&]refidid2docname translations/zh_CN/PCI/sysfs-pciuh1jhjresolvedKubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK8hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(hresource0_wc..N_wch]hresource0_wc..N_wc}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hj4ubah}(h]h ]h"]h$]h&]uh1jhj1ubj)}(hhh]h)}(h:PCI WC映射资源N,如果可预取的话 (binary, mmap)h]h:PCI WC映射资源N,如果可预取的话 (binary, mmap)}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjKubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(hrevisionh]hrevision}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjkubah}(h]h ]h"]h$]h&]uh1jhjhubj)}(hhh]h)}(hPCI修订版 (ascii, ro)h]hPCI修订版 (ascii, ro)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(hromh]hrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h/PCI ROM资源,如果存在的话 (binary, ro)h]h/PCI ROM资源,如果存在的话 (binary, ro)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hhh](j)}(hhh]h)}(hsubsystem_deviceh]hsubsystem_device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGubah}(h]h ]h"]h$]h&]uh1jhjDubj)}(hhh]h)}(hPCI供应商 (ascii, ro)h]hPCI供应商 (ascii, ro)}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK>hj^ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhK-hjxhhubj)}(hro - 只读文件 rw - 文件是可读和可写的 wo - 只写文件 mmap - 文件是可移动的 ascii - 文件包含ascii文本 binary - 文件包含二进制数据 cpumask - 文件包含一个cpumask类型的h]hro - 只读文件 rw - 文件是可读和可写的 wo - 只写文件 mmap - 文件是可移动的 ascii - 文件包含ascii文本 binary - 文件包含二进制数据 cpumask - 文件包含一个cpumask类型的}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKChjxhhubhfootnote)}(h4rw 仅适用于 IORESOURCE_IO(I/O 端口)区域 h](hlabel)}(h1h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h3rw 仅适用于 IORESOURCE_IO(I/O 端口)区域h]h3rw 仅适用于 IORESOURCE_IO(I/O 端口)区域}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjubeh}(h]jah ]h"]1ah$]h&]jajjuh1jhhhKKhjxhhjKubh)}(hX只读文件是信息性的,对它们的写入将被忽略,但 "rom "文件除外。可写文件可以用来在设备上执 行操作(例如,改变配置空间,分离设备)。 mmapable文件可以通过偏移量为0的文件的mmap获得, 可以用来从用户空间进行实际的设备编程。注意,有些平台不支持某些资源的mmapping,所以一定要 检查任何尝试的mmap的返回值。其中最值得注意的是I/O端口资源,它也提供读/写访问。h]hX只读文件是信息性的,对它们的写入将被忽略,但 “rom “文件除外。可写文件可以用来在设备上执 行操作(例如,改变配置空间,分离设备)。 mmapable文件可以通过偏移量为0的文件的mmap获得, 可以用来从用户空间进行实际的设备编程。注意,有些平台不支持某些资源的mmapping,所以一定要 检查任何尝试的mmap的返回值。其中最值得注意的是I/O端口资源,它也提供读/写访问。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjxhhubh)}(hXenable "文件提供了一个计数器,表明设备已经被启用了多少次。如果'enable'文件目前返回'4', 而一个'1'被呼入它,它将返回'5'。向它呼入一个'0'会减少计数。不过,即使它返回到0,一些初始 化可能也不会被逆转。h]hX.enable “文件提供了一个计数器,表明设备已经被启用了多少次。如果’enable’文件目前返回’4’, 而一个’1’被呼入它,它将返回’5’。向它呼入一个’0’会减少计数。不过,即使它返回到0,一些初始 化可能也不会被逆转。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhjxhhubh)}(hXrom "文件很特别,因为它提供了对设备ROM文件的只读访问,如果有的话。然而,它在默认情况下是 禁用的,所以应用程序应该在尝试读取调用之前将字符串 "1 "写入该文件以启用它,并在访问之后将 "0 "写入该文件以禁用它。请注意,设备必须被启用,才能成功返回数据。如果驱动没有被绑定到设备 上,可以使用上面提到的 "enable "文件将其启用。h]hXrom “文件很特别,因为它提供了对设备ROM文件的只读访问,如果有的话。然而,它在默认情况下是 禁用的,所以应用程序应该在尝试读取调用之前将字符串 “1 “写入该文件以启用它,并在访问之后将 “0 “写入该文件以禁用它。请注意,设备必须被启用,才能成功返回数据。如果驱动没有被绑定到设备 上,可以使用上面提到的 “enable “文件将其启用。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjxhhubh)}(hXeremove "文件是用来移除PCI设备的,通过向该文件写入一个非零的整数。这并不涉及任何形式的热插 拔功能,例如关闭设备的电源。该设备被从内核的PCI设备列表中移除,它的sysfs目录被移除,并且该 设备将被从任何连接到它的驱动程序中移除。移除PCI根总线是不允许的。h]hXgremove “文件是用来移除PCI设备的,通过向该文件写入一个非零的整数。这并不涉及任何形式的热插 拔功能,例如关闭设备的电源。该设备被从内核的PCI设备列表中移除,它的sysfs目录被移除,并且该 设备将被从任何连接到它的驱动程序中移除。移除PCI根总线是不允许的。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjxhhubjw)}(hhh](j|)}(h通过sysfs访问原有资源h]h通过sysfs访问原有资源}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjhhhhhK`ubh)}(h如果底层平台支持的话,传统的I/O端口和ISA内存资源也会在sysfs中提供。它们位于PCI类的层次结构 中,例如::h]h如果底层平台支持的话,传统的I/O端口和ISA内存资源也会在sysfs中提供。它们位于PCI类的层次结构 中,例如:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhjhhubj)}(hr/sys/class/pci_bus/0000:17/ |-- bridge -> ../../../devices/pci0000:17 |-- cpuaffinity |-- legacy_io `-- legacy_memh]hr/sys/class/pci_bus/0000:17/ |-- bridge -> ../../../devices/pci0000:17 |-- cpuaffinity |-- legacy_io `-- legacy_mem}hj$sbah}(h]h ]h"]h$]h&]hhuh1jhhhKehjhhubh)}(hXlegacy_io文件是一个读/写文件,可以被应用程序用来做传统的端口I/O。应用程序应该打开该文件,寻 找所需的端口(例如0x3e8),并进行1、2或4字节的读或写。legacy_mem文件应该被mmapped,其偏移 量与所需的内存偏移量相对应,例如0xa0000用于VGA帧缓冲器。然后,应用程序可以简单地解除引用返回 的指针(当然是在检查了错误之后)来访问遗留内存空间。h]hXlegacy_io文件是一个读/写文件,可以被应用程序用来做传统的端口I/O。应用程序应该打开该文件,寻 找所需的端口(例如0x3e8),并进行1、2或4字节的读或写。legacy_mem文件应该被mmapped,其偏移 量与所需的内存偏移量相对应,例如0xa0000用于VGA帧缓冲器。然后,应用程序可以简单地解除引用返回 的指针(当然是在检查了错误之后)来访问遗留内存空间。}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjhhubeh}(h]sysfsah ]h"]通过sysfs访问原有资源ah$]h&]uh1jvhjxhhhhhK`ubjw)}(hhh](j|)}(h支持新平台上的PCI访问h]h支持新平台上的PCI访问}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j{hjHhhhhhKqubh)}(h为了支持上述的PCI资源映射,Linux平台代码最好定义ARCH_GENERIC_PCI_MMAP_RESOURCE并使用该 功能的通用实现。为了支持通过/proc/bus/pci中的文件实现mmap()的历史接口,平台也可以设置 HAVE_PCI_MMAP。h]h为了支持上述的PCI资源映射,Linux平台代码最好定义ARCH_GENERIC_PCI_MMAP_RESOURCE并使用该 功能的通用实现。为了支持通过/proc/bus/pci中的文件实现mmap()的历史接口,平台也可以设置 HAVE_PCI_MMAP。}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjHhhubh)}(h另外,设置了 HAVE_PCI_MMAP 的平台可以提供他们自己的 pci_mmap_page_range() 实现,而不是定 义 ARCH_GENERIC_PCI_MMAP_RESOURCE。h]h另外,设置了 HAVE_PCI_MMAP 的平台可以提供他们自己的 pci_mmap_page_range() 实现,而不是定 义 ARCH_GENERIC_PCI_MMAP_RESOURCE。}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjHhhubh)}(h支持PCI资源的写组合映射的平台必须定义arch_can_pci_mmap_wc(),当写组合被允许时,在运行时应 评估为非零。支持I/O资源映射的平台同样定义arch_can_pci_mmap_io()。h]h支持PCI资源的写组合映射的平台必须定义arch_can_pci_mmap_wc(),当写组合被允许时,在运行时应 评估为非零。支持I/O资源映射的平台同样定义arch_can_pci_mmap_io()。}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKzhjHhhubh)}(h遗留资源由HAVE_PCI_LEGACY定义保护。希望支持遗留功能的平台应该定义它并提供 pci_legacy_read, pci_legacy_write 和 pci_mmap_legacy_page_range 函数。h]h遗留资源由HAVE_PCI_LEGACY定义保护。希望支持遗留功能的平台应该定义它并提供 pci_legacy_read, pci_legacy_write 和 pci_mmap_legacy_page_range 函数。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjHhhubeh}(h]pciah ]h"]支持新平台上的pci访问ah$]h&]uh1jvhjxhhhhhKqubeh}(h]sysfspciah ]h"] 通过sysfs访问pci设备资源ah$]h&]uh1jvhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j{N generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_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_handlerjerror_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}1]jasrefids}nameids}(jjjjjEjBjju nametypes}(jjjEjuh}(jjxjjjjjBjjjHu footnote_refs}j]jas citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes]ja citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages]transform_messages] transformerN include_log]2Documentation/translations/zh_CN/PCI/sysfs-pci.rst(NNNNta decorationNhhub.