Skip to main content

async_ops_version_t

Type Alias async_ops_version_t 

Source
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.