cc [ flag … ] file… –llgrp [ library … ] #include <sys/lgrp_user.h> int lgrp_device_lgrps(char *device_path, lgrp_id_t * lgrpids, uint_t count);
The lgrp_device_lgrps() returns the number of lgroups closest to the specified I/O device. If both lgrpids is non-null and count is not 0, lgrpids is also filled up to the specified count of lgroup IDs closest to the device.
Each I/O device on the system can be connected to one or more NUMA nodes. In order to optimize I/O performance for a given device through locality, an application needs to know which lgroups are closest to the I/O device and place its threads and/or memory needed for performing I/O near the device. It is therefore important for applications to know the NUMA I/O topology of the system.
The device_path parameter is the path to an I/O device specified by the caller.
Upon successful completion, lgrp_device_lgrps() returns the number of lgroups closest to the specified I/O device. Otherwise, it returns -1 and errno is set to indicate the error.
The lgrp_device_lgrps() function will fail if:
Operation permission is denied to the calling process (see Intro(2).
The lgrpids parameter points to an invalid memory address.
An invalid device path is specified.
The specified lgroup path does not name an existing device node.
See attributes(5) for descriptions of the following attributes: