class MsiAllocation

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

An MsiAllocation is a wrapper around an allocated block of MSI interrupts.

It allows for multiple MsiInterruptDispatchers to share an allocated block, and

synchronize access to an MSI capability dealing with multiple IRQs.

By default, all MSI Allocations use the platform's kernel msi_*

implementation for management of MSI blocks, but tests can override the

interface via Create() parameters. Since those methods are used in allocation

of interrupts but not dispatch the indirection of those calls is an

acceptable cost to have the benefit of not making the type signature more

complex with other compile-time approaches.

Public Members

static const uint32_t kMsiAllocationCountMax

Public Methods

zx_status_t Create (uint32_t irq_cnt, fbl::RefPtr<MsiAllocation> * obj, MsiAllocFn msi_alloc_fn, MsiFreeFn msi_free_fn, MsiSupportedFn msi_support_fn)

Defined at line 26 of file ../../zircon/kernel/object/msi_dispatcher.cc

zx_obj_type_t get_type ()

Defined at line 56 of file ../../zircon/kernel/object/include/object/msi_allocation.h

const msi_block_t & block ()

Defined at line 57 of file ../../zircon/kernel/object/include/object/msi_allocation.h

Lock<SpinLock> & lock ()

Defined at line 62 of file ../../zircon/kernel/object/include/object/msi_allocation.h

void ~MsiAllocation ()

Defined at line 102 of file ../../zircon/kernel/object/msi_dispatcher.cc

zx_info_msi GetInfo ()

Defined at line 113 of file ../../zircon/kernel/object/msi_dispatcher.cc

zx_status_t ReserveId (MsiId msi_id)

Interface for MsiInterruptDispatchers to reserve a given MSI id for management.

Defined at line 76 of file ../../zircon/kernel/object/msi_dispatcher.cc

zx_status_t ReleaseId (MsiId msi_id)

Defined at line 89 of file ../../zircon/kernel/object/msi_dispatcher.cc