|
ReactOS 0.4.17-dev-806-gffa4164
|

Go to the source code of this file.
Classes | |
| struct | _ARBITER_ALTERNATIVE |
| struct | _ARBITER_ALLOCATION_STATE |
| struct | _ARBITER_ORDERING |
| struct | _ARBITER_ORDERING_LIST |
| struct | _ARBITER_INSTANCE |
Macros | |
| #define | TAG_ARBITER 'ibrA' |
| #define | ARBITER_MAXIMUM_ADDRESS ((ULONGLONG)~0ULL) |
| #define | ARBITER_PRIORITY_NULL 0x00000000 |
| #define | ARBITER_PRIORITY_PREFERRED_RESERVED 0x7FFFFFFD |
| #define | ARBITER_PRIORITY_RESERVED 0x7FFFFFFE |
| #define | ARBITER_PRIORITY_EXHAUSTED 0x7FFFFFFF |
| #define | ARBITER_ALTERNATIVE_FLAG_SHARED 0x00000001 |
| #define | ARBITER_ALTERNATIVE_FLAG_FIXED 0x00000002 |
| #define | ARBITER_ALTERNATIVE_FLAG_BADRANGE 0x00000004 |
| #define | ARBITER_ALTERNATIVE_FLAG_INACCESSIBLE_OK 0x00000008 |
| #define | ARBITER_RANGE_BOOT_ALLOCATED 0x01 |
| #define | ARBITER_RANGE_SHARED_DRIVER 0x02 |
| #define | ARBITER_RANGE_PORT_ALIAS 0x10 |
| #define | ARBITER_RANGE_INACCESSIBLE 0x40 |
| #define | ARBITER_STATE_FLAG_BOOT 0x0004 |
| #define | ARBITER_STATE_FLAG_NULL_CONFLICT_OK 0x0008 |
| #define | ARBITER_STATE_FLAG_WORKSPACE 0x0010 |
| #define | ARBITER_STATE_FLAG_MCFG_CONFLICT 0x0020 |
Functions | |
| NTSTATUS NTAPI | ArbiterLibInitializeInstance (_Inout_ PARBITER_INSTANCE Arbiter, _In_ PDEVICE_OBJECT BusDeviceObject, _In_ CM_RESOURCE_TYPE ResourceType, _In_ PCWSTR ArbiterName, _In_ PCWSTR OrderName, _In_ PARB_TRANSLATE_ORDERING TranslateOrderingFunction) |
| VOID NTAPI | ArbiterLibDeleteInstance (_In_ PARBITER_INSTANCE Arbiter) |
| VOID NTAPI | ArbiterLibFreeOrderingList (_Inout_ PARBITER_ORDERING_LIST OrderingList) |
| NTSTATUS NTAPI | ArbiterLibAddOrdering (_Inout_ PARBITER_ORDERING_LIST OrderingList, _In_ UINT64 Start, _In_ UINT64 End) |
| NTSTATUS NTAPI | ArbiterLibDefaultAssignmentOrdering (_Inout_ PARBITER_INSTANCE Arbiter, _In_ PCWSTR AllocationOrderName, _In_ PCWSTR ReservedResourcesName, _In_opt_ PARB_TRANSLATE_ORDERING TranslateOrderingFunction) |
| Builds the arbiter's allocation ordering from the registry policy, most-preferred window first. | |
| NTSTATUS NTAPI | ArbiterLibHandler (_In_ PVOID Context, _In_ ARBITER_ACTION Action, _Inout_ PARBITER_PARAMETERS Parameters) |
| The single ARBITER_ACTION dispatcher every exported ARBITER_INTERFACE points its ArbiterHandler at; Context is the ARBITER_INSTANCE. | |
| NTSTATUS NTAPI | ArbiterLibTestAllocation (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_TEST_ALLOCATION_PARAMETERS Parameters) |
| The TestAllocation action: tentatively places every entry of the arbitration list, leaving the solution in PossibleAllocation for a later commit or rollback. | |
| NTSTATUS NTAPI | ArbiterLibRetestAllocation (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_RETEST_ALLOCATION_PARAMETERS Parameters) |
| The RetestAllocation action: deterministically re-establishes the placements a previous test chose, without searching. | |
| NTSTATUS NTAPI | ArbiterLibBootAllocation (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_BOOT_ALLOCATION_PARAMETERS Parameters) |
| The BootAllocation action: records every entry's firmware boot configuration in the committed allocation. | |
| NTSTATUS NTAPI | ArbiterLibQueryConflict (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_QUERY_CONFLICT_PARAMETERS Parameters) |
| The QueryConflict action: reports which devices' committed ranges collide with a candidate resource. | |
| NTSTATUS NTAPI | ArbiterLibCommitAllocation (_In_ PARBITER_INSTANCE Arbiter) |
| The CommitAllocation action: the tentative PossibleAllocation becomes the committed Allocation, and the old committed list is recycled as the next scratch list. | |
| NTSTATUS NTAPI | ArbiterLibRollbackAllocation (_In_ PARBITER_INSTANCE Arbiter) |
| The RollbackAllocation action: discards the tentative allocation; the committed one is untouched. | |
| BOOLEAN NTAPI | ArbiterLibGetNextAllocationRange (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| Moves the working window to the next candidate range, walking the entry's alternatives in priority order across the arbiter's ordering list. | |
| BOOLEAN NTAPI | ArbiterLibFindSuitableRange (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| Finds a free range of the current candidate window in the arbiter's tentative allocation list. | |
| VOID NTAPI | ArbiterLibAddAllocation (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| Records the chosen placement in the arbiter's tentative allocation list, owned by the requesting device. | |
| VOID NTAPI | ArbiterLibBacktrackAllocation (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| Undoes the last AddAllocation performed for this entry. | |
| NTSTATUS NTAPI | ArbiterLibPreprocessEntry (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| Per-entry hook invoked before each placement attempt. The library default does nothing and succeeds. | |
| NTSTATUS NTAPI | ArbiterLibSortArbitrationList (_Inout_ PLIST_ENTRY ArbitrationList) |
| Orders an arbitration list most-constrained first, so fixed requirements are placed before flexible ones can steal their ranges. | |
| NTSTATUS NTAPI | ArbiterLibAllocateEntry (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| Places the whole stack of entries with backtracking: when an entry cannot be placed, the previous entry's tentative choice is withdrawn and varied, first lower within its window, then via its next window or alternative. | |
| NTSTATUS NTAPI | ArbiterLibStartArbiter (_In_ PARBITER_INSTANCE Arbiter, _In_ PCM_RESOURCE_LIST StartResources) |
| The StartArbiter action default: seeds the committed allocation with the windows the bus decodes, so arbitration starts from the hardware's real extent. | |
| BOOLEAN NTAPI | ArbiterLibOverrideConflict (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| The OverrideConflict default, the last of the conflict escapes: grants a FIXED requirement whose window conflicts only with ranges the requesting device itself already owns. | |
| NTSTATUS NTAPI | ArbiterLibAddInaccessibleAllocationRange (_In_ PARBITER_INSTANCE Arbiter, _In_ PCWSTR OrderingName, _Inout_ PRTL_RANGE_LIST RangeList) |
| Carves the firmware-reported inaccessible ranges (Arbiters\InaccessibleRange<OrderingName>) out of a range list as unowned blocking ranges, so they are never handed to a device. | |
| NTSTATUS NTAPI | ArbiterLibAddMmConfigRangeAsBootReserved (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PRTL_RANGE_LIST RangeList) |
| Reserves the PCI-Express enhanced-config (MMCONFIG / ECAM) MMIO window (Arbiters\ReservedResources\MmConfigRange) in a range list, and records it for ArbiterLibIsConflictWithMmConfigRange. | |
| BOOLEAN NTAPI | ArbiterLibIsConflictWithMmConfigRange (_In_ ULONGLONG Start, _In_ ULONGLONG End) |
| Determines whether a range overlaps the recorded MMCONFIG window. | |
| VOID NTAPI | ArbiterLibReserveRange (_In_ PARBITER_INSTANCE Arbiter, _In_ ULONGLONG Start, _In_ ULONGLONG End, _In_opt_ PVOID Owner, _In_ BOOLEAN Shared) |
| Commits a single [Start, End] range into the arbiter as an ordinary allocation owned by Owner. | |
| VOID NTAPI | ArbiterLibReleaseResources (_In_ PARBITER_INSTANCE Arbiter, _In_ PVOID Owner) |
| Releases every committed range owned by Owner. | |
| NTSTATUS NTAPI | ArbiterLibQueryArbitrate (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_QUERY_ARBITRATE_PARAMETERS Parameters) |
| The QueryArbitrate action default: reports that this arbiter is willing to arbitrate the given list. | |
| NTSTATUS NTAPI | ArbiterLibAddReserved (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ADD_RESERVED_PARAMETERS Parameters) |
| The AddReserved action default: nothing to reserve. | |
| NTSTATUS NTAPI | ArbiterLibInitializeRangeList (_In_ PARBITER_INSTANCE Arbiter, _In_ ULONG ResourceCount, _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Resources, _Inout_ PRTL_RANGE_LIST RangeList) |
| The InitializeRangeList callback default. | |
| #define ARBITER_ALTERNATIVE_FLAG_INACCESSIBLE_OK 0x00000008 |
| typedef struct _ARBITER_INSTANCE ARBITER_INSTANCE |
| typedef struct _ARBITER_ORDERING ARBITER_ORDERING |
| typedef VOID(NTAPI * PARB_ADD_ALLOCATION) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| typedef NTSTATUS(NTAPI * PARB_ADD_RESERVED) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ADD_RESERVED_PARAMETERS Parameters) |
| typedef NTSTATUS(NTAPI * PARB_ALLOCATE_ENTRY) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| typedef VOID(NTAPI * PARB_BACKTRACK_ALLOCATION) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| typedef NTSTATUS(NTAPI * PARB_BOOT_ALLOCATION) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_BOOT_ALLOCATION_PARAMETERS Parameters) |
| typedef NTSTATUS(NTAPI * PARB_COMMIT_ALLOCATION) (_In_ PARBITER_INSTANCE Arbiter) |
| typedef BOOLEAN(NTAPI * PARB_FIND_SUITABLE_RANGE) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| typedef BOOLEAN(NTAPI * PARB_GET_NEXT_ALLOCATION_RANGE) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| typedef NTSTATUS(NTAPI * PARB_INITIALIZE_RANGE_LIST) (_In_ PARBITER_INSTANCE Arbiter, _In_ ULONG DescriptorCount, _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptors, _Inout_ PRTL_RANGE_LIST RangeList) |
| typedef BOOLEAN(NTAPI * PARB_OVERRIDE_CONFLICT) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| typedef NTSTATUS(NTAPI * PARB_PACK_RESOURCE) (_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor, _In_ UINT64 Start, _Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor) |
| typedef NTSTATUS(NTAPI * PARB_PREPROCESS_ENTRY) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| typedef NTSTATUS(NTAPI * PARB_QUERY_ARBITRATE) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_QUERY_ARBITRATE_PARAMETERS Parameters) |
| typedef NTSTATUS(NTAPI * PARB_QUERY_CONFLICT) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_QUERY_CONFLICT_PARAMETERS Parameters) |
| typedef NTSTATUS(NTAPI * PARB_RETEST_ALLOCATION) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_RETEST_ALLOCATION_PARAMETERS Parameters) |
| typedef NTSTATUS(NTAPI * PARB_ROLLBACK_ALLOCATION) (_In_ PARBITER_INSTANCE Arbiter) |
| typedef INT32(NTAPI * PARB_SCORE_REQUIREMENT) (_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor) |
| typedef NTSTATUS(NTAPI * PARB_START_ARBITER) (_In_ PARBITER_INSTANCE Arbiter, _In_ PCM_RESOURCE_LIST StartResources) |
| typedef NTSTATUS(NTAPI * PARB_TEST_ALLOCATION) (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_TEST_ALLOCATION_PARAMETERS Parameters) |
| typedef NTSTATUS(NTAPI * PARB_TRANSLATE_ORDERING) (_Out_ PIO_RESOURCE_DESCRIPTOR OutIoDescriptor, _In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor) |
| typedef struct _ARBITER_ALTERNATIVE * PARBITER_ALTERNATIVE |
| typedef struct _ARBITER_INSTANCE * PARBITER_INSTANCE |
| typedef struct _ARBITER_ORDERING * PARBITER_ORDERING |
| VOID NTAPI ArbiterLibAddAllocation | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_ALLOCATION_STATE | ArbState | ||
| ) |
Records the chosen placement in the arbiter's tentative allocation list, owned by the requesting device.
| [in] | Arbiter | The arbiter instance whose PossibleAllocation list receives the range. |
| [in,out] | ArbState | The allocation state whose Start, End and RangeAttributes describe the placement. The range is owned by the entry's physical device object. |
Definition at line 828 of file range.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibAddInaccessibleAllocationRange | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _In_ PCWSTR | OrderingName, | ||
| _Inout_ PRTL_RANGE_LIST | RangeList | ||
| ) |
Carves the firmware-reported inaccessible ranges (Arbiters\InaccessibleRange<OrderingName>) out of a range list as unowned blocking ranges, so they are never handed to a device.
| [in] | Arbiter | The arbiter instance the ranges are filtered for. |
| [in] | OrderingName | The InaccessibleRange value to read. |
| [in,out] | RangeList | The range list to carve the windows out of. |
Definition at line 634 of file ordering.c.
| NTSTATUS NTAPI ArbiterLibAddMmConfigRangeAsBootReserved | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PRTL_RANGE_LIST | RangeList | ||
| ) |
Reserves the PCI-Express enhanced-config (MMCONFIG / ECAM) MMIO window (Arbiters\ReservedResources\MmConfigRange) in a range list, and records it for ArbiterLibIsConflictWithMmConfigRange.
| [in] | Arbiter | The arbiter instance the window is filtered for. |
| [in,out] | RangeList | The range list to reserve the window in. |
Definition at line 663 of file ordering.c.
| NTSTATUS NTAPI ArbiterLibAddOrdering | ( | _Inout_ PARBITER_ORDERING_LIST | OrderingList, |
| _In_ UINT64 | Start, | ||
| _In_ UINT64 | End | ||
| ) |
Definition at line 78 of file ordering.c.
Referenced by ArbiterLibDefaultAssignmentOrdering(), ArbpAddOrderingCallback(), ArbpAddReservedCallback(), and ArbpExcludeOrderingRange().
| NTSTATUS NTAPI ArbiterLibAddReserved | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_ADD_RESERVED_PARAMETERS | Parameters | ||
| ) |
The AddReserved action default: nothing to reserve.
| [in] | Arbiter | The arbiter instance the reservation was aimed at. |
| [in,out] | Parameters | The action parameters (pre-Vista builds receive the requirement and resource descriptors directly). |
Definition at line 112 of file handler.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibAllocateEntry | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_ALLOCATION_STATE | ArbState | ||
| ) |
Places the whole stack of entries with backtracking: when an entry cannot be placed, the previous entry's tentative choice is withdrawn and varied, first lower within its window, then via its next window or alternative.
| [in] | Arbiter | The arbiter instance whose walker callbacks (GetNextAllocationRange, FindSuitableRange, AddAllocation, BacktrackAllocation) drive each placement. |
| [in,out] | ArbState | The first ARBITER_ALLOCATION_STATE of the allocation stack, one per entry in most-constrained-first order, terminated by a state whose Entry is NULL. |
Definition at line 223 of file entry.c.
Referenced by ArbiterLibInitializeInstance().
| VOID NTAPI ArbiterLibBacktrackAllocation | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_ALLOCATION_STATE | ArbState | ||
| ) |
Undoes the last AddAllocation performed for this entry.
| [in] | Arbiter | The arbiter instance whose PossibleAllocation list the tentative range is deleted from. |
| [in,out] | ArbState | The allocation state whose Start and End describe the placement being removed sanity checked by the entry's physical device object. |
Definition at line 866 of file range.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibBootAllocation | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_BOOT_ALLOCATION_PARAMETERS | Parameters | ||
| ) |
The BootAllocation action: records every entry's firmware boot configuration in the committed allocation.
| [in] | Arbiter | The arbiter instance performing the reservation. |
| [in,out] | Parameters | The action parameters carrying the arbitration list (pre-Vista builds receive the list directly). |
Definition at line 684 of file transaction.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibCommitAllocation | ( | _In_ PARBITER_INSTANCE | Arbiter | ) |
The CommitAllocation action: the tentative PossibleAllocation becomes the committed Allocation, and the old committed list is recycled as the next scratch list.
| [in] | Arbiter | The arbiter instance whose transaction is committed. |
Definition at line 515 of file transaction.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibDefaultAssignmentOrdering | ( | _Inout_ PARBITER_INSTANCE | Arbiter, |
| _In_ PCWSTR | AllocationOrderName, | ||
| _In_ PCWSTR | ReservedResourcesName, | ||
| _In_opt_ PARB_TRANSLATE_ORDERING | TranslateOrderingFunction | ||
| ) |
Builds the arbiter's allocation ordering from the registry policy, most-preferred window first.
| [in,out] | Arbiter | The arbiter instance whose OrderingList and ReservedList are (re)created. Callers may rebuild an existing ordering against a different policy table (see pcix!ario_ApplyBrokenVideoHack). |
| [in] | AllocationOrderName | The AllocationOrder value naming this arbiter's preferred windows. The engine walks the resulting list in index order, so index 0 is the most-preferred window. |
| [in] | ReservedResourcesName | The ReservedResources value naming this arbiter's last-resort windows: each is recorded in the ReservedList for the engine's final pass and pruned out of every ordering window, so it is only ever offered once all orderings fail. |
| [in] | TranslateOrderingFunction | Optional per-arbiter descriptor translation. |
Definition at line 571 of file ordering.c.
Referenced by ArbiterLibInitializeInstance(), and ario_ApplyBrokenVideoHack().
| VOID NTAPI ArbiterLibDeleteInstance | ( | _In_ PARBITER_INSTANCE | Arbiter | ) |
Definition at line 22 of file arbiter.c.
Referenced by ArbiterLibInitializeInstance(), and PciArbiterDestructor().
| BOOLEAN NTAPI ArbiterLibFindSuitableRange | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_ALLOCATION_STATE | ArbState | ||
| ) |
Finds a free range of the current candidate window in the arbiter's tentative allocation list.
| [in] | Arbiter | The arbiter instance whose PossibleAllocation list is searched. |
| [in,out] | ArbState | The allocation state of the entry being placed. On success, Start and End receive the chosen window. |
Definition at line 717 of file range.c.
Referenced by ArbiterLibInitializeInstance(), IopArbMemFindSuitableRange(), and IopArbPortFindSuitableRange().
| VOID NTAPI ArbiterLibFreeOrderingList | ( | _Inout_ PARBITER_ORDERING_LIST | OrderingList | ) |
Definition at line 60 of file ordering.c.
Referenced by ArbiterLibDefaultAssignmentOrdering(), ArbiterLibDeleteInstance(), ArbpExcludeOrderingRange(), and ario_ApplyBrokenVideoHack().
| BOOLEAN NTAPI ArbiterLibGetNextAllocationRange | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_ALLOCATION_STATE | ArbState | ||
| ) |
Moves the working window to the next candidate range, walking the entry's alternatives in priority order across the arbiter's ordering list.
| [in] | Arbiter | The arbiter instance whose ordering list supplies the candidate windows. |
| [in,out] | ArbState | The allocation state of the entry being placed. On success, CurrentMinimum, CurrentMaximum and CurrentAlternative describe the next window to search; the window is pre-trimmed so an aligned allocation of the required length fits inside it. |
Definition at line 562 of file range.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibHandler | ( | _In_ PVOID | Context, |
| _In_ ARBITER_ACTION | Action, | ||
| _Inout_ PARBITER_PARAMETERS | Parameters | ||
| ) |
The single ARBITER_ACTION dispatcher every exported ARBITER_INTERFACE points its ArbiterHandler at; Context is the ARBITER_INSTANCE.
| [in] | Context | The ARBITER_INSTANCE the interface was created for. |
| [in] | Action | The ARBITER_ACTION to perform. |
| [in,out] | Parameters | The parameters union matching the action. |
Definition at line 164 of file handler.c.
Referenced by PciArbiterConstructor().
| NTSTATUS NTAPI ArbiterLibInitializeInstance | ( | _Inout_ PARBITER_INSTANCE | Arbiter, |
| _In_ PDEVICE_OBJECT | BusDeviceObject, | ||
| _In_ CM_RESOURCE_TYPE | ResourceType, | ||
| _In_ PCWSTR | ArbiterName, | ||
| _In_ PCWSTR | OrderName, | ||
| _In_ PARB_TRANSLATE_ORDERING | TranslateOrderingFunction | ||
| ) |
Definition at line 69 of file arbiter.c.
Referenced by arbusno_Initializer(), ario_Initializer(), armem_Initializer(), IopArbBusNumberInitialize(), IopArbDmaInitialize(), IopArbIrqInitialize(), IopArbMemInitialize(), and IopArbPortInitialize().
| NTSTATUS NTAPI ArbiterLibInitializeRangeList | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _In_ ULONG | ResourceCount, | ||
| _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR | Resources, | ||
| _Inout_ PRTL_RANGE_LIST | RangeList | ||
| ) |
The InitializeRangeList callback default.
| [in] | Arbiter | The arbiter instance the range list belongs to. |
| [in] | ResourceCount | The number of descriptors in Resources. |
| [in] | Resources | The CM partial resource descriptors describing the decoded windows. |
| [in,out] | RangeList | The range list to rebuild from the descriptors. |
Definition at line 440 of file handler.c.
Referenced by ArbiterLibInitializeInstance().
Determines whether a range overlaps the recorded MMCONFIG window.
| [in] | Start | The inclusive start of the range to test. |
| [in] | End | The inclusive end of the range to test. |
Definition at line 689 of file ordering.c.
Referenced by ArbiterLibFindSuitableRange().
| BOOLEAN NTAPI ArbiterLibOverrideConflict | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_ALLOCATION_STATE | ArbState | ||
| ) |
The OverrideConflict default, the last of the conflict escapes: grants a FIXED requirement whose window conflicts only with ranges the requesting device itself already owns.
| [in] | Arbiter | The arbiter instance whose tentative allocation list is walked. |
| [in,out] | ArbState | The allocation state of the requirement. On a grant, Start and End receive the requested window. |
Definition at line 48 of file range.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibPreprocessEntry | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_ALLOCATION_STATE | ArbState | ||
| ) |
Per-entry hook invoked before each placement attempt. The library default does nothing and succeeds.
| [in] | Arbiter | The arbiter instance placing the entry. |
| [in,out] | ArbState | The allocation state of the entry about to be placed. |
Definition at line 38 of file entry.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibQueryArbitrate | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_QUERY_ARBITRATE_PARAMETERS | Parameters | ||
| ) |
The QueryArbitrate action default: reports that this arbiter is willing to arbitrate the given list.
| [in] | Arbiter | The arbiter instance being queried. |
| [in,out] | Parameters | The action parameters carrying the arbitration list (pre-Vista builds receive the list directly). |
Definition at line 73 of file handler.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibQueryConflict | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_QUERY_CONFLICT_PARAMETERS | Parameters | ||
| ) |
The QueryConflict action: reports which devices' committed ranges collide with a candidate resource.
| [in] | Arbiter | The arbiter instance performing the query. |
| [in,out] | Parameters | The action parameters carrying the device, the candidate resource and the output slots (pre-Vista builds receive them directly). |
Definition at line 937 of file transaction.c.
Referenced by ArbiterLibInitializeInstance().
Releases every committed range owned by Owner.
| [in] | Arbiter | The arbiter instance to release the ranges from. |
| [in] | Owner | The owning device object (a removed device's PDO). |
Definition at line 561 of file handler.c.
| VOID NTAPI ArbiterLibReserveRange | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _In_ ULONGLONG | Start, | ||
| _In_ ULONGLONG | End, | ||
| _In_opt_ PVOID | Owner, | ||
| _In_ BOOLEAN | Shared | ||
| ) |
Commits a single [Start, End] range into the arbiter as an ordinary allocation owned by Owner.
| [in] | Arbiter | The arbiter instance to reserve the range in. |
| [in] | Start | The first address (or unit) of the range. |
| [in] | End | The last address (or unit) of the range, inclusive. |
| [in] | Owner | The owning device object, or NULL for a system reservation. |
| [in] | Shared | TRUE if the range may be shared with other shareable owners. |
| NTSTATUS NTAPI ArbiterLibRetestAllocation | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_RETEST_ALLOCATION_PARAMETERS | Parameters | ||
| ) |
The RetestAllocation action: deterministically re-establishes the placements a previous test chose, without searching.
| [in] | Arbiter | The arbiter instance performing the retest. |
| [in,out] | Parameters | The action parameters carrying the arbitration list (pre-Vista builds receive the list directly). |
Definition at line 483 of file transaction.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibRollbackAllocation | ( | _In_ PARBITER_INSTANCE | Arbiter | ) |
The RollbackAllocation action: discards the tentative allocation; the committed one is untouched.
| [in] | Arbiter | The arbiter instance whose transaction is rolled back. |
Definition at line 543 of file transaction.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibSortArbitrationList | ( | _Inout_ PLIST_ENTRY | ArbitrationList | ) |
Orders an arbitration list most-constrained first, so fixed requirements are placed before flexible ones can steal their ranges.
| [in,out] | ArbitrationList | The list of ARBITER_LIST_ENTRY nodes to sort, keyed on the WorkSpace constrainedness score in ascending order. The sort is stable: equally scored entries keep their relative order. |
Definition at line 71 of file entry.c.
Referenced by ArbpTestAllocation().
| NTSTATUS NTAPI ArbiterLibStartArbiter | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _In_ PCM_RESOURCE_LIST | StartResources | ||
| ) |
The StartArbiter action default: seeds the committed allocation with the windows the bus decodes, so arbitration starts from the hardware's real extent.
| [in] | Arbiter | The arbiter instance being started. |
| [in] | StartResources | The bus's decoded resources; NULL or empty means nothing to seed. |
Definition at line 470 of file handler.c.
Referenced by ArbiterLibInitializeInstance().
| NTSTATUS NTAPI ArbiterLibTestAllocation | ( | _In_ PARBITER_INSTANCE | Arbiter, |
| _Inout_ PARBITER_TEST_ALLOCATION_PARAMETERS | Parameters | ||
| ) |
The TestAllocation action: tentatively places every entry of the arbitration list, leaving the solution in PossibleAllocation for a later commit or rollback.
| [in] | Arbiter | The arbiter instance performing the test. |
| [in,out] | Parameters | The action parameters carrying the arbitration list (pre-Vista builds receive the list directly). |
Definition at line 447 of file transaction.c.
Referenced by ArbiterLibInitializeInstance().