class ChannelDispatcher

Defined at line 24 of file ../../zircon/kernel/object/include/object/channel_dispatcher.h

Public Methods

zx_obj_type_t get_type ()

Defined at line 33 of file ../../zircon/kernel/object/include/object/channel_dispatcher.h

void CancelMessageWaiters ()

Cancels any channel_call message waiters waiting on this endpoint.

Defined at line 59 of file ../../zircon/kernel/object/include/object/channel_dispatcher.h

MessageCounts get_message_counts ()

Defined at line 118 of file ../../zircon/kernel/object/include/object/channel_dispatcher.h

zx_status_t Create (KernelHandle<ChannelDispatcher> * handle0, KernelHandle<ChannelDispatcher> * handle1, zx_rights_t * rights)

static

Defined at line 219 of file ../../zircon/kernel/object/channel_dispatcher.cc

void ~ChannelDispatcher ()

Defined at line 254 of file ../../zircon/kernel/object/channel_dispatcher.cc

zx_status_t Read (zx_koid_t owner, uint32_t * msg_size, uint32_t * msg_handle_count, MessagePacketPtr * msg, bool may_disard)

Read from this endpoint's message queue.

|owner| is the handle table koid of the process attempting to read from the channel.

|msg_size| and |msg_handle_count| are in-out parameters. As input, they specify the maximum

size and handle count, respectively. On ZX_OK or ZX_ERR_BUFFER_TOO_SMALL, they specify the

actual size and handle count of the next message. The next message is returned in |*msg| on

ZX_OK and also on ZX_ERR_BUFFER_TOO_SMALL when |may_discard| is set.

Defined at line 343 of file ../../zircon/kernel/object/channel_dispatcher.cc

zx_status_t Write (zx_koid_t owner, MessagePacketPtr msg)

Write to the opposing endpoint's message queue. |owner| is the handle table koid of the process

attempting to write to the channel, or ZX_KOID_INVALID if kernel is doing it.

Defined at line 382 of file ../../zircon/kernel/object/channel_dispatcher.cc

zx_status_t Call (zx_koid_t owner, MessagePacketPtr msg, zx_instant_mono_t deadline, MessagePacketPtr * reply)

Perform a transacted Write + Read. |owner| is the handle table koid of the process attempting

to write to the channel, or ZX_KOID_INVALID if kernel is doing it.

Defined at line 417 of file ../../zircon/kernel/object/channel_dispatcher.cc

zx_status_t ResumeInterruptedCall (MessageWaiter * waiter, const Deadline & deadline, MessagePacketPtr * reply)

Performs the wait-then-read half of Call. This is meant for retrying

after an interruption caused by suspending.

Defined at line 519 of file ../../zircon/kernel/object/channel_dispatcher.cc

int64_t get_channel_full_count ()

Returns the number of times a channel reached the max pending message count,

|kMaxPendingMessageCount|.

Defined at line 216 of file ../../zircon/kernel/object/channel_dispatcher.cc

void on_zero_handles_locked ()

PeeredDispatcher implementation.

Defined at line 302 of file ../../zircon/kernel/object/channel_dispatcher.cc

void OnPeerZeroHandlesLocked ()

This requires holding the shared channel lock. The thread analysis

can reason about repeated calls to get_lock() on the shared object,

but cannot reason about the aliasing between left->get_lock() and

right->get_lock(), which occurs above in on_zero_handles.

Defined at line 328 of file ../../zircon/kernel/object/channel_dispatcher.cc

void set_owner (zx_koid_t new_owner)

Defined at line 310 of file ../../zircon/kernel/object/channel_dispatcher.cc

Records