|
ReactOS 0.4.17-dev-684-ga6524ef
|

Go to the source code of this file.
Macros | |
| #define | NDEBUG |
Functions | |
| static VOID | ArbpWritePriority (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALTERNATIVE Alternative) |
| Writes an alternative's priority to the next ordering-list range it can be satisfied from. | |
| static BOOLEAN | ArbpIsRootEnumerated (_In_ PDEVICE_OBJECT DeviceObject) |
| Determines whether a device is enumerated by the root enumerator. | |
| static BOOLEAN | ArbpSharesDriverStack (_In_ PDEVICE_OBJECT DeviceA, _In_ PDEVICE_OBJECT DeviceB) |
| Determines whether a common driver is loaded on both device stacks, above the physical device objects. | |
| static BOOLEAN | ArbpShareDriverExclusive (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| Attempts last-chance sharing for a CmResourceShareDriverExclusive requirement whose window RtlFindRange found occupied. | |
| static BOOLEAN | ArbpReuseOwnedInterrupt (_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState) |
| Hands a device back its own already routed IRQ instead of searching for a fresh one, on legacy-PIC / no-ACPI interrupt routing setups. | |
| 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. | |
| 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 618 of file range.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 656 of file range.c.
Referenced by ArbiterLibInitializeInstance().
| 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 520 of file range.c.
Referenced by ArbiterLibInitializeInstance().
| 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 379 of file range.c.
Referenced by ArbiterLibInitializeInstance().
|
static |
Determines whether a device is enumerated by the root enumerator.
| [in] | DeviceObject | The physical device object to examine. May be NULL, in which case the device is not considered root-enumerated. |
Definition at line 123 of file range.c.
Referenced by ArbpShareDriverExclusive().
|
static |
Hands a device back its own already routed IRQ instead of searching for a fresh one, on legacy-PIC / no-ACPI interrupt routing setups.
| [in] | Arbiter | The arbiter instance. The routine is a no-op for every resource type other than CmResourceTypeInterrupt. |
| [in,out] | ArbState | The allocation state of the requirement. On success, Start and End receive the vector this device already owns in the committed allocation list. |
Definition at line 316 of file range.c.
Referenced by ArbiterLibFindSuitableRange().
|
static |
Attempts last-chance sharing for a CmResourceShareDriverExclusive requirement whose window RtlFindRange found occupied.
| [in] | Arbiter | The arbiter instance whose tentative allocation list is walked for an overlapping, owned, not-already-available range that the request is allowed to share. |
| [in,out] | ArbState | The allocation state of the requirement. On success, Start and End receive the requested window and the range attributes are tagged ARBITER_RANGE_SHARED_DRIVER for a driver-exclusive requirement. |
Definition at line 215 of file range.c.
Referenced by ArbiterLibFindSuitableRange().
|
static |
Determines whether a common driver is loaded on both device stacks, above the physical device objects.
| [in] | DeviceA | The first physical device object whose attached stack is walked. |
| [in] | DeviceB | The second physical device object whose attached stack is walked. |
Definition at line 164 of file range.c.
Referenced by ArbpShareDriverExclusive().
|
static |
Writes an alternative's priority to the next ordering-list range it can be satisfied from.
| [in] | Arbiter | The arbiter instance whose ordering list is walked. |
| [in,out] | Alternative | The alternative whose priority is written. Ordinary priorities are ordering-list indices biased by one, negated for IO_RESOURCE_PREFERRED alternatives so they sort first. Once the orderings are exhausted the alternative is given one final full-range pass at (PREFERRED_)RESERVED priority, after which it goes EXHAUSTED. |
Definition at line 38 of file range.c.
Referenced by ArbiterLibGetNextAllocationRange().