dau_driver.linux_xdma ===================== .. py:module:: dau_driver.linux_xdma Attributes ---------- .. autoapisummary:: dau_driver.linux_xdma.DEFAULT_DEV_ROOT dau_driver.linux_xdma.DEFAULT_SYSFS_PCI_ROOT dau_driver.linux_xdma.DEFAULT_BACKEND dau_driver.linux_xdma.DEFAULT_DMA_CONSTRAINTS dau_driver.linux_xdma._MAGIC_PROBE_ATTEMPTS dau_driver.linux_xdma._MAGIC_PROBE_DELAY_S Functions --------- .. autoapisummary:: dau_driver.linux_xdma.discover_devices dau_driver.linux_xdma.identify_device dau_driver.linux_xdma._find_register_window dau_driver.linux_xdma._read_register dau_driver.linux_xdma._read_register_block_snapshot dau_driver.linux_xdma.endpoint_for_devnode dau_driver.linux_xdma._channel_paths dau_driver.linux_xdma._device_name Module Contents --------------- .. py:data:: DEFAULT_DEV_ROOT .. py:data:: DEFAULT_SYSFS_PCI_ROOT .. py:data:: DEFAULT_BACKEND :value: 'linux-xdma' .. py:data:: DEFAULT_DMA_CONSTRAINTS .. py:function:: discover_devices(root: str | pathlib.Path = DEFAULT_DEV_ROOT) -> list[dau_driver.device.DauDevice] .. py:function:: identify_device(user_path: str | pathlib.Path, *, h2c_path: str | pathlib.Path | None = None, c2h_path: str | pathlib.Path | None = None) -> dau_driver.device.DauDevice .. py:data:: _MAGIC_PROBE_ATTEMPTS :value: 5 .. py:data:: _MAGIC_PROBE_DELAY_S :value: 0.01 .. py:function:: _find_register_window(user_path: pathlib.Path) -> tuple[int, int] .. py:function:: _read_register(user_path: pathlib.Path, register_window_offset: int, offset: dau_core.registers.RegisterOffset) -> int .. py:function:: _read_register_block_snapshot(user_path: pathlib.Path, register_window_offset: int) -> dau_core.registers.RegisterBlockSnapshot .. py:function:: endpoint_for_devnode(user_path: pathlib.Path, *, sysfs_root: pathlib.Path | None = None) -> str | None The PCI endpoint (``0000:04:00.0``) whose xdma instance owns this ``_user`` devnode, or None when sysfs does not say. The inverse of ``verify_advertisement.device_name_for_endpoint``, over the same layout: the devnodes hang off the PCI device in sysfs as ``/xdma/``. None rather than a raise on a missing sysfs, an unowned node or (never seen, but not guessed at) two owners, so the caller can fall back to a weaker name and say so. .. py:function:: _channel_paths(user_path: pathlib.Path) -> tuple[pathlib.Path, pathlib.Path] .. py:function:: _device_name(user_path: pathlib.Path) -> str