object_wait_async - subscribe for signals on an object
#include <magenta/syscalls.h> mx_status_t mx_object_wait_async(mx_handle_t handle, mx_handle_t port, uint64_t key, mx_signals_t signals, uint32_t options);
object_wait_async() is a non-blocking syscall which causes packet delivery on port when the object state changes and matches signals. Use port_wait() to retrieve the packets.
handle points to the object that is to be watched for changes and must be a waitable object.
The options argument can be either:
To stop packet delivery on either mode, close handle or use port_cancel(). For both modes, if any of the specified signals are currently asserted on the object at the time of the object_wait_async() call, a packet (or packets) will be delivered immediately.
See port_wait for more information about each type of packet and their semantics.
object_wait_async() returns MX_OK if the subscription succeeded.
MX_ERR_INVALID_ARGS options is not MX_WAIT_ASYNC_ONCE or MX_WAIT_ASYNC_REPEATING.
MX_ERR_BAD_HANDLE handle is not a valid handle or port is not a valid handle.
MX_ERR_WRONG_TYPE port is not a Port handle.
MX_ERR_ACCESS_DENIED handle does not have MX_RIGHT_READ or port does not have MX_RIGHT_WRITE.
MX_ERR_NOT_SUPPORTED handle is a handle that cannot be waited on.
MX_ERR_NO_MEMORY Temporary out of memory condition.