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