class InterruptDispatcher

Defined at line 31 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

Note that unlike most Dispatcher subclasses, this one is further

subclassed, and so cannot be final.

Public Methods

zx_status_t WaitForInterrupt (zx_time_t * out_timestamp)

Defined at line 33 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

zx_info_interrupt_t GetInfo ()

Returns information about this interrupt in a zx_object_get_info call.

Defined at line 31 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

InterruptDispatcher & operator= (const InterruptDispatcher & )

Defined at line 34 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

zx_obj_type_t get_type ()

Defined at line 35 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

bool is_wake_vector ()

Defined at line 37 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

void GetDiagnostics (WakeVector::Diagnostics & diagnostics_out)

Default wake vector diagnostics for interrupt dispatchers.

Defined at line 51 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

zx_status_t Trigger (zx_time_t timestamp)

Defined at line 145 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

zx_status_t Ack ()

Defined at line 342 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

zx_status_t Destroy ()

Defined at line 255 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

void InterruptHandler ()

Defined at line 204 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

zx_status_t Bind (fbl::RefPtr<PortDispatcher> port_dispatcher, uint64_t key)

Defined at line 288 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

zx_status_t Unbind (fbl::RefPtr<PortDispatcher> port_dispatcher)

Defined at line 319 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

void on_zero_handles ()

Defined at line 406 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

Protected Methods

void MaskInterrupt ()
void UnmaskInterrupt ()
void DeactivateInterrupt ()
void UnregisterInterruptHandler ()
void InterruptDispatcher (Flags flags, uint32_t options)

Defined at line 20 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

void InterruptDispatcher (Flags flags)

It is an error to specify both INTERRUPT_UNMASK_PREWAIT and INTERRUPT_UNMASK_PREWAIT_UNLOCKED.

Defined at line 94 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

void Signal ()

Defined at line 96 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

void InitializeWakeEvent ()

Allow subclasses to add/remove the wake event instance from the global diagnostics list at the

appropriate times during initialization and teardown. These methods do not need to be called

unless the subclass needs to be able to wake the system from suspend. See lib/wake-vector.h for

the specific requirements regarding when to initialize and destroy the wake event.

Defined at line 104 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

void DestroyWakeEvent ()

Defined at line 105 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

bool SendPacketLocked (zx_time_t timestamp)

Defined at line 136 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

zx::result<InterruptDispatcher::PostAckState> AckInternal ()

Defined at line 347 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

ktl::optional<zx_status_t> BeginWaitForInterrupt (zx_time_t * out_timestamp)

The zx_interrupt_wait operation is broken down into two phases. First, we

BeginWaitForInterrupt, which will handle internal bookkeeping and either return a status code

if the wait operation is finished (success or failure), or it will return nothing if we need to

block and try again later.

Afterwards, if we need to block, we will call DoWaitForInterruptBlock and try again if the

block operation succeeds.

Defined at line 47 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

zx_status_t DoWaitForInterruptBlock ()

Defined at line 121 of file ../../zircon/kernel/object/interrupt_dispatcher.cc

Enumerations

enum Flags
Name Value
INTERRUPT_VIRTUAL (1u << 0)
INTERRUPT_UNMASK_PREWAIT (1u << 1)
INTERRUPT_UNMASK_PREWAIT_UNLOCKED (1u << 2)
INTERRUPT_MASK_POSTWAIT (1u << 4)
INTERRUPT_WAKE_VECTOR (1u << 5)
INTERRUPT_ALLOW_ACK_WITHOUT_PORT_FOR_TEST (1u << 6)
INTERRUPT_TIMESTAMP_MONO (1u << 7)

Defined at line 65 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h

enum PostAckState
Name Value
FullyAcked 0
Retriggered 1

Defined at line 88 of file ../../zircon/kernel/object/include/object/interrupt_dispatcher.h