- get or release a poll descriptor
cc [ flag... ] file... –lrsm [ library... ] #include <rsmapi.h> int rsm_memseg_get_pollfd(void *memseg, struct pollfd *fd);
int rsm_memseg_release_pollfd(void *memseg);
The rsm_memseg_get_pollfd() and rsm_memseg_release_pollfd() functions provide an alternative to rsm_intr_signal_wait(3RSM). The waiting process can multiplex event waiting using the poll(2) function after first obtaining a poll descriptor using rsm_memseg_get_pollfd(). The descriptor can subsequently be released using rsm_memseg_release_pollfd().
As a result of a call rsm_memseg_get_pollfd(), the specified pollfd structure is initialized with a descriptor for the specified segment (memseg) and the event generated by rsm_intr_signal_post(3RSM). Either an export segment handle or an import segment handle can be type cast to a void pointer. The pollfd argument can subsequently be used with the rsm_intr_signal_wait_pollfd(3RSM) function to wait for the event; it cannot be used with poll(). If memseg references an export segment, the segment must be currently published. If memseg references an import segment, the segment must be connected.
The rsm_memseg_reslease_pollfd() function decrements the reference count of the pollfd structure associated with the specified segment. A segment unpublish, destroy or unmap operation will fail if the reference count is non-zero.
Upon successful completion, these functions return 0. Otherwise, an error value is returned to indicate the error.
The rsm_memseg_get_pollfd() and rsm_memseg_release_pollfd() function can return the following error:
Invalid segment handle.
See attributes(5) for descriptions of the following attributes: