~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/translations/zh_CN/infiniband/user_verbs.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 .. include:: ../disclaimer-zh_CN.rst
  2 
  3 :Original: Documentation/infiniband/user_verbs.rst
  4 
  5 :翻译:
  6 
  7  司延腾 Yanteng Si <siyanteng@loongson.cn>
  8 
  9 :校译:
 10 
 11  王普宇 Puyu Wang <realpuyuwang@gmail.com>
 12  时奎亮 Alex Shi <alexs@kernel.org>
 13 
 14 .. _cn_infiniband_user_verbs:
 15 
 16 =================
 17 用户空间verbs访问
 18 =================
 19 
 20   ib_uverbs模块,通过启用CONFIG_INFINIBAND_USER_VERBS构建,使用户空间
 21   通过“verbs”直接访问IB硬件,如InfiniBand架构规范第11章所述。
 22 
 23   要使用verbs,需要libibverbs库,可从https://github.com/linux-rdma/rdma-core。
 24   libibverbs包含一个独立于设备的API,用于使用ib_uverbs接口。libibverbs
 25   还需要为你的InfiniBand硬件提供适当的独立于设备的内核和用户空间驱动。例如,
 26   要使用Mellanox HCA,你需要安装ib_mthca内核模块和libmthca用户空间驱动。
 27 
 28 用户-内核通信
 29 =============
 30 
 31   用户空间通过/dev/infiniband/uverbsN字符设备与内核进行慢速路径、资源管理
 32   操作的通信。快速路径操作通常是通过直接写入硬件寄存器mmap()到用户空间来完成
 33   的,没有系统调用或上下文切换到内核。
 34 
 35   命令是通过在这些设备文件上的write()s发送给内核的。ABI在
 36   drivers/infiniband/include/ib_user_verbs.h中定义。需要内核响应的命令的结
 37   构包含一个64位字段,用来传递一个指向输出缓冲区的指针。状态作为write()系统调
 38   用的返回值被返回到用户空间。
 39 
 40 资源管理
 41 ========
 42 
 43   由于所有IB资源的创建和销毁都是通过文件描述符传递的命令完成的,所以内核可以跟
 44   踪那些被附加到给定用户空间上下文的资源。ib_uverbs模块维护着idr表,用来在
 45   内核指针和不透明的用户空间句柄之间进行转换,这样内核指针就不会暴露给用户空间,
 46   而用户空间也无法欺骗内核去跟踪一个假的指针。
 47 
 48   这也允许内核在一个进程退出时进行清理,并防止一个进程触及另一个进程的资源。
 49 
 50 内存固定
 51 ========
 52 
 53   直接的用户空间I/O要求与作为潜在I/O目标的内存区域保持在同一物理地址上。ib_uverbs
 54   模块通过get_user_pages()和put_page()调用来管理内存区域的固定和解除固定。它还核
 55   算进程的pinned_vm中被固定的内存量,并检查非特权进程是否超过其RLIMIT_MEMLOCK限制。
 56 
 57   被多次固定的页面在每次被固定时都会被计数,所以pinned_vm的值可能会高估一个进程所
 58   固定的页面数量。
 59 
 60 /dev文件
 61 ========
 62 
 63   要想用udev自动创建适当的字符设备文件,可以采用如下规则::
 64 
 65     KERNEL=="uverbs*", NAME="infiniband/%k"
 66 
 67   可以使用。 这将创建设备节点,名为::
 68 
 69     /dev/infiniband/uverbs0
 70 
 71   等等。由于InfiniBand的用户空间verbs对于非特权进程来说应该是安全的,因此在udev规
 72   则中加入适当的MODE或GROUP可能是有用的。

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php