pub type async_ops_version_t = u32;Expand description
Asynchronous dispatcher interface.
Clients should not call into this interface directly: use the wrapper functions declared in other header files, such as |async_begin_wait()| in <lib/async/wait.h>. See the documentation of those functions for details about each method’s purpose and behavior.
This interface consists of several groups of methods:
- Timing: |now|
- Waiting for signals: |begin_wait|, |cancel_wait|
- Posting tasks: |post_task|, |cancel_task|
- Queuing packets: |queue_packet|
- Virtual machine operations: |set_guest_bell_trap|
To preserve binary compatibility, each successive version of this interface is guaranteed to be backwards-compatible with clients of earlier versions. New methods must only be added by extending the structure at the end and declaring a new version number. Do not reorder the declarations or modify existing versions.
Implementations of this interface must provide valid (non-null) function pointers for every method declared in the interface version they support. Unsupported methods must return |ZX_ERR_NOT_SUPPORTED| and have no other side-effects. Furthermore, if an implementation supports one method of a group, such as |begin_wait|, then it must also support the other methods of the group, such as |cancel_wait|.
Many clients assume that the dispatcher interface is fully implemented and may fail to work with dispatchers that do not support the methods they need. Therefore general-purpose dispatcher implementations are encouraged to support the whole interface to ensure broad compatibility.