---
name: "libnvmf_registry_device_for_each-libnvme3"
section: "2"
platform: "linux"
package: "nvme-cli"
version: "3.2-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libnvmf_registry_device_for_each-libnvme3"
---

# libnvmf\_registry\_device\_for\_each-libnvme3(2)

Iterate over live controller registry entries

## NAME

libnvmf\_registry\_device\_for\_each - Iterate over live controller registry entries

## SYNOPSIS

**int libnvmf\_registry\_device\_for\_each** **(struct libnvme\_global\_ctx \*ctx** *,* **int (\*callback)(const char \*device, void \*user\_data)** *,* **void \*user\_data** *);*

## ARGUMENTS

- ctx

  libnvme global context; must not be NULL

- callback

  Callback invoked for each live entry

- user\_data

  User data passed to *callback*

## DESCRIPTION

Scans the registry directory and invokes *callback* for each entry whose corresponding /dev/nvmeN device node exists.  Stale entries left behind after a controller is removed are silently skipped.  The existence check is advisory: a device may be removed between the check and callback invocation; callers should handle ENOENT gracefully.

## RETURN

0 on success, negative errno if the registry directory cannot be opened.  Returns 0 when the directory does not exist (nothing registered).
