mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-26 19:33:31 +00:00
[FORMATTING] Start Kernel Arbiter with clean instance
This commit is contained in:
@@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Kernel
|
||||||
|
* LICENSE: MIT (https://spdx.org/licenses/MIT)
|
||||||
|
* PURPOSE: PnP manager Root Bus Arbiter
|
||||||
|
* COPYRIGHT: Copyright 2025 Justin Miller <[email protected]>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
|
#include <ntoskrnl.h>
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
|
extern ARBITER_INSTANCE IopRootBusNumberArbiter;
|
||||||
|
|
||||||
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbBusNumberUnpackRequirements(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_Out_ PUINT64 OutMinimumAddress,
|
||||||
|
_Out_ PUINT64 OutMaximumAddress,
|
||||||
|
_Out_ PUINT32 OutLength,
|
||||||
|
_Out_ PUINT32 OutAlignment)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbBusNumberUnpackRequirements: IoDescriptor: %p, OutMinimumAddress: %p, OutMaximumAddress: %p, OutLength: %p, OutAlignment: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
OutMinimumAddress,
|
||||||
|
OutMaximumAddress,
|
||||||
|
OutLength,
|
||||||
|
OutAlignment);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbBusNumberPackResource(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_In_ UINT64 Start,
|
||||||
|
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbBusNumberPackResource: IoDescriptor: %p, Start: %I64x, CmDescriptor: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
Start,
|
||||||
|
CmDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbBusNumberUnpackResource(
|
||||||
|
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
|
||||||
|
_Out_ PUINT64 Start,
|
||||||
|
_Out_ PUINT32 OutLength)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbBusNumberUnpackResource: CmDescriptor: %p, Start: %p, OutLength: %p\n",
|
||||||
|
CmDescriptor,
|
||||||
|
Start,
|
||||||
|
OutLength);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
INT32
|
||||||
|
NTAPI
|
||||||
|
IopArbBusNumberScoreRequirement(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbBusNumberScoreRequirement: IoDescriptor: %p\n",
|
||||||
|
IoDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initialize the RootBusArbiter
|
||||||
|
*
|
||||||
|
* Initializes rootbus arbiter against IopRootBusNumberArbiter for use in PCI
|
||||||
|
* every "bus" gets to check against this.
|
||||||
|
* @return NTSTATUS
|
||||||
|
* @retval STATUS_SUCCESS
|
||||||
|
* @retval STATUS_UNSUCCESSFUL
|
||||||
|
* @retval STATUS_INSUFFICIENT_RESOURCES
|
||||||
|
*/
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbBusNumberInitialize(VOID)
|
||||||
|
{
|
||||||
|
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
||||||
|
|
||||||
|
PAGED_CODE();
|
||||||
|
IopRootBusNumberArbiter.Name = L"RootBusNumber";
|
||||||
|
IopRootBusNumberArbiter.UnpackRequirement = IopArbBusNumberUnpackRequirements;
|
||||||
|
IopRootBusNumberArbiter.PackResource = IopArbBusNumberPackResource;
|
||||||
|
IopRootBusNumberArbiter.UnpackResource = IopArbBusNumberUnpackResource;
|
||||||
|
IopRootBusNumberArbiter.ScoreRequirement = IopArbBusNumberScoreRequirement;
|
||||||
|
|
||||||
|
Status = ArbInitializeArbiterInstance(&IopRootBusNumberArbiter,
|
||||||
|
NULL,
|
||||||
|
CmResourceTypeBusNumber,
|
||||||
|
IopRootBusNumberArbiter.Name,
|
||||||
|
L"Root",
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("IopArbBusNumberInitialize: Failed with %X", Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Kernel
|
||||||
|
* LICENSE: MIT (https://spdx.org/licenses/MIT)
|
||||||
|
* PURPOSE: PnP manager Root DMA Arbiter
|
||||||
|
* COPYRIGHT: Copyright 2025 Justin Miller <[email protected]>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
|
#include <ntoskrnl.h>
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
|
extern ARBITER_INSTANCE IopRootDmaArbiter;
|
||||||
|
|
||||||
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbDmaUnpackRequirements(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_Out_ PUINT64 OutMinimumAddress,
|
||||||
|
_Out_ PUINT64 OutMaximumAddress,
|
||||||
|
_Out_ PUINT32 OutLength,
|
||||||
|
_Out_ PUINT32 OutAlignment)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbDmaUnpackRequirements: IoDescriptor: %p, OutMinimumAddress: %p, OutMaximumAddress: %p, OutLength: %p, OutAlignment: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
OutMinimumAddress,
|
||||||
|
OutMaximumAddress,
|
||||||
|
OutLength,
|
||||||
|
OutAlignment);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbDmaPackResource(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_In_ UINT64 Start,
|
||||||
|
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbDmaPackResource: IoDescriptor: %p, Start: %p, CmDescriptor: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
Start,
|
||||||
|
CmDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbDmaUnpackResource(
|
||||||
|
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
|
||||||
|
_Out_ PUINT64 Start,
|
||||||
|
_Out_ PUINT32 OutLength)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbDmaUnpackResource: CmDescriptor: %p, Start: %p, OutLength: %p\n",
|
||||||
|
CmDescriptor,
|
||||||
|
Start,
|
||||||
|
OutLength);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
INT32
|
||||||
|
NTAPI
|
||||||
|
IopArbDmaScoreRequirement(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbDmaScoreRequirement: IoDescriptor: %p\n",
|
||||||
|
IoDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbDmaInitialize(VOID)
|
||||||
|
{
|
||||||
|
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
||||||
|
|
||||||
|
PAGED_CODE();
|
||||||
|
IopRootDmaArbiter.Name = L"RootDma";
|
||||||
|
IopRootDmaArbiter.UnpackRequirement = IopArbDmaUnpackRequirements;
|
||||||
|
IopRootDmaArbiter.PackResource = IopArbDmaPackResource;
|
||||||
|
IopRootDmaArbiter.UnpackResource = IopArbDmaUnpackResource;
|
||||||
|
IopRootDmaArbiter.ScoreRequirement = IopArbDmaScoreRequirement;
|
||||||
|
|
||||||
|
Status = ArbInitializeArbiterInstance(&IopRootDmaArbiter,
|
||||||
|
NULL,
|
||||||
|
CmResourceTypeBusNumber,
|
||||||
|
IopRootDmaArbiter.Name,
|
||||||
|
L"Root",
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("IopArbDmaInitialize: Failed with %X", Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Kernel
|
||||||
|
* LICENSE: MIT (https://spdx.org/licenses/MIT)
|
||||||
|
* PURPOSE: PnP manager Root IRQ Arbiter
|
||||||
|
* COPYRIGHT: Copyright 2025 Justin Miller <[email protected]>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
|
#include <ntoskrnl.h>
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
|
extern ARBITER_INSTANCE IopRootIrqArbiter;
|
||||||
|
|
||||||
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbIrqUnpackRequirements(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_Out_ PUINT64 OutMinimumAddress,
|
||||||
|
_Out_ PUINT64 OutMaximumAddress,
|
||||||
|
_Out_ PUINT32 OutLength,
|
||||||
|
_Out_ PUINT32 OutAlignment)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbIrqUnpackRequirements: IoDescriptor: %p, OutMinimumAddress: %p, OutMaximumAddress: %p, OutLength: %p, OutAlignment: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
OutMinimumAddress,
|
||||||
|
OutMaximumAddress,
|
||||||
|
OutLength,
|
||||||
|
OutAlignment);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbIrqPackResource(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_In_ UINT64 Start,
|
||||||
|
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbIrqPackResource: IoDescriptor: %p, Start: %p, CmDescriptor: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
Start,
|
||||||
|
CmDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbIrqUnpackResource(
|
||||||
|
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
|
||||||
|
_Out_ PUINT64 Start,
|
||||||
|
_Out_ PUINT32 OutLength)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbIrqUnpackResource: CmDescriptor: %p, Start: %p, OutLength: %p\n",
|
||||||
|
CmDescriptor,
|
||||||
|
Start,
|
||||||
|
OutLength);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
INT32
|
||||||
|
NTAPI
|
||||||
|
IopArbIrqScoreRequirement(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbIrqScoreRequirement: IoDescriptor: %p\n",
|
||||||
|
IoDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbIrqInitialize(VOID)
|
||||||
|
{
|
||||||
|
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
||||||
|
|
||||||
|
PAGED_CODE();
|
||||||
|
IopRootIrqArbiter.Name = L"RootIRQ";
|
||||||
|
IopRootIrqArbiter.UnpackRequirement = IopArbIrqUnpackRequirements;
|
||||||
|
IopRootIrqArbiter.PackResource = IopArbIrqPackResource;
|
||||||
|
IopRootIrqArbiter.UnpackResource = IopArbIrqUnpackResource;
|
||||||
|
IopRootIrqArbiter.ScoreRequirement = IopArbIrqScoreRequirement;
|
||||||
|
|
||||||
|
Status = ArbInitializeArbiterInstance(&IopRootIrqArbiter,
|
||||||
|
NULL,
|
||||||
|
CmResourceTypeBusNumber,
|
||||||
|
IopRootIrqArbiter.Name,
|
||||||
|
L"Root",
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("IopArbDmaInitialize: Failed with %X", Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Kernel
|
||||||
|
* LICENSE: MIT (https://spdx.org/licenses/MIT)
|
||||||
|
* PURPOSE: PnP manager Root Memory Arbiter
|
||||||
|
* COPYRIGHT: Copyright 2025 Justin Miller <[email protected]>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
|
#include <ntoskrnl.h>
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
|
extern ARBITER_INSTANCE IopRootMemArbiter;
|
||||||
|
|
||||||
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbMemUnpackRequirements(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_Out_ PUINT64 OutMinimumAddress,
|
||||||
|
_Out_ PUINT64 OutMaximumAddress,
|
||||||
|
_Out_ PUINT32 OutLength,
|
||||||
|
_Out_ PUINT32 OutAlignment)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbMemUnpackRequirements: IoDescriptor: %p, OutMinimumAddress: %p, OutMaximumAddress: %p, OutLength: %p, OutAlignment: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
OutMinimumAddress,
|
||||||
|
OutMaximumAddress,
|
||||||
|
OutLength,
|
||||||
|
OutAlignment);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbMemPackResource(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_In_ UINT64 Start,
|
||||||
|
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbMemPackResource: IoDescriptor: %p, Start: %p, CmDescriptor: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
Start,
|
||||||
|
CmDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbMemUnpackResource(
|
||||||
|
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
|
||||||
|
_Out_ PUINT64 Start,
|
||||||
|
_Out_ PUINT32 OutLength)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbMemUnpackResource: CmDescriptor: %p, Start: %p, OutLength: %p\n",
|
||||||
|
CmDescriptor,
|
||||||
|
Start,
|
||||||
|
OutLength);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
INT32
|
||||||
|
NTAPI
|
||||||
|
IopArbMemScoreRequirement(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopArbMemScoreRequirement: IoDescriptor: %p\n",
|
||||||
|
IoDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbMemInitialize(VOID)
|
||||||
|
{
|
||||||
|
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
||||||
|
|
||||||
|
PAGED_CODE();
|
||||||
|
IopRootMemArbiter.Name = L"RootMemory";
|
||||||
|
IopRootMemArbiter.UnpackRequirement = IopArbMemUnpackRequirements;
|
||||||
|
IopRootMemArbiter.PackResource = IopArbMemPackResource;
|
||||||
|
IopRootMemArbiter.UnpackResource = IopArbMemUnpackResource;
|
||||||
|
IopRootMemArbiter.ScoreRequirement = IopArbMemScoreRequirement;
|
||||||
|
|
||||||
|
Status = ArbInitializeArbiterInstance(&IopRootMemArbiter,
|
||||||
|
NULL,
|
||||||
|
CmResourceTypeBusNumber,
|
||||||
|
IopRootMemArbiter.Name,
|
||||||
|
L"Root",
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("IopArbDmaInitialize: Failed with %X", Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Kernel
|
||||||
|
* LICENSE: MIT (https://spdx.org/licenses/MIT)
|
||||||
|
* PURPOSE: PnP manager Root Port Arbiter
|
||||||
|
* COPYRIGHT: Copyright 2025 Justin Miller <[email protected]>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
|
#include <ntoskrnl.h>
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
|
extern ARBITER_INSTANCE IopRootPortArbiter;
|
||||||
|
|
||||||
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopPortMemUnpackRequirements(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_Out_ PUINT64 OutMinimumAddress,
|
||||||
|
_Out_ PUINT64 OutMaximumAddress,
|
||||||
|
_Out_ PUINT32 OutLength,
|
||||||
|
_Out_ PUINT32 OutAlignment)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopPortMemUnpackRequirements: IoDescriptor: %p, OutMinimumAddress: %p, OutMaximumAddress: %p, OutLength: %p, OutAlignment: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
OutMinimumAddress,
|
||||||
|
OutMaximumAddress,
|
||||||
|
OutLength,
|
||||||
|
OutAlignment);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopPortMemPackResource(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
||||||
|
_In_ UINT64 Start,
|
||||||
|
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopPortMemPackResource: IoDescriptor: %p, Start: %p, CmDescriptor: %p\n",
|
||||||
|
IoDescriptor,
|
||||||
|
Start,
|
||||||
|
CmDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopPortMemUnpackResource(
|
||||||
|
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
|
||||||
|
_Out_ PUINT64 Start,
|
||||||
|
_Out_ PUINT32 OutLength)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopPortMemUnpackResource: CmDescriptor: %p, Start: %p, OutLength: %p\n",
|
||||||
|
CmDescriptor,
|
||||||
|
Start,
|
||||||
|
OutLength);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
INT32
|
||||||
|
NTAPI
|
||||||
|
IopPortMemScoreRequirement(
|
||||||
|
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
DPRINT("IopPortMemScoreRequirement: IoDescriptor: %p\n",
|
||||||
|
IoDescriptor);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
IopArbPortInitialize(VOID)
|
||||||
|
{
|
||||||
|
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
||||||
|
|
||||||
|
PAGED_CODE();
|
||||||
|
IopRootPortArbiter.Name = L"RootPort";
|
||||||
|
IopRootPortArbiter.UnpackRequirement = IopPortMemUnpackRequirements;
|
||||||
|
IopRootPortArbiter.PackResource = IopPortMemPackResource;
|
||||||
|
IopRootPortArbiter.UnpackResource = IopPortMemUnpackResource;
|
||||||
|
IopRootPortArbiter.ScoreRequirement = IopPortMemScoreRequirement;
|
||||||
|
|
||||||
|
Status = ArbInitializeArbiterInstance(&IopRootPortArbiter,
|
||||||
|
NULL,
|
||||||
|
CmResourceTypeBusNumber,
|
||||||
|
IopRootPortArbiter.Name,
|
||||||
|
L"Root",
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("IopArbDmaInitialize: Failed with %X", Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
@@ -1,514 +0,0 @@
|
|||||||
/*
|
|
||||||
* PROJECT: ReactOS Kernel
|
|
||||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
|
||||||
* PURPOSE: Root arbiters of the PnP manager
|
|
||||||
* COPYRIGHT: Copyright 2020 Vadim Galyant <[email protected]>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* INCLUDES ******************************************************************/
|
|
||||||
|
|
||||||
#include <ntoskrnl.h>
|
|
||||||
|
|
||||||
#define NDEBUG
|
|
||||||
#include <debug.h>
|
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
|
||||||
|
|
||||||
extern ARBITER_INSTANCE IopRootBusNumberArbiter;
|
|
||||||
extern ARBITER_INSTANCE IopRootIrqArbiter;
|
|
||||||
extern ARBITER_INSTANCE IopRootDmaArbiter;
|
|
||||||
extern ARBITER_INSTANCE IopRootMemArbiter;
|
|
||||||
extern ARBITER_INSTANCE IopRootPortArbiter;
|
|
||||||
|
|
||||||
/* DATA **********************************************************************/
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
|
||||||
|
|
||||||
/* BusNumber arbiter */
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopBusNumberUnpackRequirement(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
|
||||||
_Out_ PUINT64 OutMinimumAddress,
|
|
||||||
_Out_ PUINT64 OutMaximumAddress,
|
|
||||||
_Out_ PUINT32 OutLength,
|
|
||||||
_Out_ PUINT32 OutAlignment)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopBusNumberPackResource(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
|
||||||
_In_ UINT64 Start,
|
|
||||||
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopBusNumberUnpackResource(
|
|
||||||
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
|
|
||||||
_Out_ PUINT64 Start,
|
|
||||||
_Out_ PUINT32 Length)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
INT32
|
|
||||||
NTAPI
|
|
||||||
IopBusNumberScoreRequirement(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ARB_MAX_BUS_NUMBER 0xFF
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopBusNumberInitialize(VOID)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
DPRINT("IopRootBusNumberArbiter %p\n", &IopRootBusNumberArbiter);
|
|
||||||
|
|
||||||
IopRootBusNumberArbiter.UnpackRequirement = IopBusNumberUnpackRequirement;
|
|
||||||
IopRootBusNumberArbiter.PackResource = IopBusNumberPackResource;
|
|
||||||
IopRootBusNumberArbiter.UnpackResource = IopBusNumberUnpackResource;
|
|
||||||
IopRootBusNumberArbiter.ScoreRequirement = IopBusNumberScoreRequirement;
|
|
||||||
|
|
||||||
Status = ArbInitializeArbiterInstance(&IopRootBusNumberArbiter,
|
|
||||||
NULL,
|
|
||||||
CmResourceTypeBusNumber,
|
|
||||||
L"RootBusNumber",
|
|
||||||
L"Root",
|
|
||||||
NULL);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
DPRINT1("IopBusNumberInitialize: Status %p\n", Status);
|
|
||||||
ASSERT(FALSE);
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = RtlAddRange(IopRootBusNumberArbiter.Allocation,
|
|
||||||
(UINT64)(ARB_MAX_BUS_NUMBER + 1),
|
|
||||||
(UINT64)(-1),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
NULL,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Irq arbiter */
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopIrqUnpackRequirement(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
|
||||||
_Out_ PUINT64 OutMinimumVector,
|
|
||||||
_Out_ PUINT64 OutMaximumVector,
|
|
||||||
_Out_ PUINT32 OutParam1,
|
|
||||||
_Out_ PUINT32 OutParam2)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopIrqPackResource(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
|
||||||
_In_ UINT64 Start,
|
|
||||||
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopIrqUnpackResource(
|
|
||||||
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
|
|
||||||
_Out_ PUINT64 Start,
|
|
||||||
_Out_ PUINT32 OutLength)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
INT32
|
|
||||||
NTAPI
|
|
||||||
IopIrqScoreRequirement(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopIrqTranslateOrdering(
|
|
||||||
_Out_ PIO_RESOURCE_DESCRIPTOR OutIoDescriptor,
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopIrqInitialize(VOID)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
DPRINT("IopRootIrqArbiter %p\n", &IopRootIrqArbiter);
|
|
||||||
|
|
||||||
IopRootIrqArbiter.UnpackRequirement = IopIrqUnpackRequirement;
|
|
||||||
IopRootIrqArbiter.PackResource = IopIrqPackResource;
|
|
||||||
IopRootIrqArbiter.UnpackResource = IopIrqUnpackResource;
|
|
||||||
IopRootIrqArbiter.ScoreRequirement = IopIrqScoreRequirement;
|
|
||||||
|
|
||||||
Status = ArbInitializeArbiterInstance(&IopRootIrqArbiter,
|
|
||||||
NULL,
|
|
||||||
CmResourceTypeInterrupt,
|
|
||||||
L"RootIRQ",
|
|
||||||
L"Root",
|
|
||||||
IopIrqTranslateOrdering);
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dma arbiter */
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopDmaUnpackRequirement(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
|
||||||
_Out_ PUINT64 OutMinimumChannel,
|
|
||||||
_Out_ PUINT64 OutMaximumChannel,
|
|
||||||
_Out_ PUINT32 OutParam1,
|
|
||||||
_Out_ PUINT32 OutParam2)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopDmaPackResource(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
|
||||||
_In_ UINT64 Start,
|
|
||||||
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopDmaUnpackResource(
|
|
||||||
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
|
|
||||||
_Out_ PUINT64 Start,
|
|
||||||
_Out_ PUINT32 OutLength)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
INT32
|
|
||||||
NTAPI
|
|
||||||
IopDmaScoreRequirement(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopDmaOverrideConflict(
|
|
||||||
_In_ PARBITER_INSTANCE Arbiter)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopDmaInitialize(VOID)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
DPRINT("IopRootDmaArbiter %p\n", &IopRootDmaArbiter);
|
|
||||||
|
|
||||||
IopRootDmaArbiter.UnpackRequirement = IopDmaUnpackRequirement;
|
|
||||||
IopRootDmaArbiter.PackResource = IopDmaPackResource;
|
|
||||||
IopRootDmaArbiter.UnpackResource = IopDmaUnpackResource;
|
|
||||||
IopRootDmaArbiter.ScoreRequirement = IopDmaScoreRequirement;
|
|
||||||
|
|
||||||
IopRootDmaArbiter.OverrideConflict = IopDmaOverrideConflict;
|
|
||||||
|
|
||||||
Status = ArbInitializeArbiterInstance(&IopRootDmaArbiter,
|
|
||||||
NULL,
|
|
||||||
CmResourceTypeDma,
|
|
||||||
L"RootDMA",
|
|
||||||
L"Root",
|
|
||||||
NULL);
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Common for Memory and Port arbiters */
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopGenericUnpackRequirement(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
|
||||||
_Out_ PUINT64 OutMinimumAddress,
|
|
||||||
_Out_ PUINT64 OutMaximumAddress,
|
|
||||||
_Out_ PUINT32 OutLength,
|
|
||||||
_Out_ PUINT32 OutAlignment)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopGenericPackResource(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
|
|
||||||
_In_ UINT64 Start,
|
|
||||||
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopGenericUnpackResource(
|
|
||||||
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
|
|
||||||
_Out_ PUINT64 Start,
|
|
||||||
_Out_ PUINT32 OutLength)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
INT32
|
|
||||||
NTAPI
|
|
||||||
IopGenericScoreRequirement(
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopGenericTranslateOrdering(
|
|
||||||
_Out_ PIO_RESOURCE_DESCRIPTOR OutIoDescriptor,
|
|
||||||
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Memory arbiter */
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
BOOLEAN
|
|
||||||
NTAPI
|
|
||||||
IopMemFindSuitableRange(
|
|
||||||
_In_ PARBITER_INSTANCE Arbiter,
|
|
||||||
_In_ PARBITER_ALLOCATION_STATE State)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopMemInitialize(VOID)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
DPRINT("IopRootMemArbiter %p\n", &IopRootMemArbiter);
|
|
||||||
|
|
||||||
IopRootMemArbiter.UnpackRequirement = IopGenericUnpackRequirement;
|
|
||||||
IopRootMemArbiter.PackResource = IopGenericPackResource;
|
|
||||||
IopRootMemArbiter.UnpackResource = IopGenericUnpackResource;
|
|
||||||
IopRootMemArbiter.ScoreRequirement = IopGenericScoreRequirement;
|
|
||||||
|
|
||||||
IopRootMemArbiter.FindSuitableRange = IopMemFindSuitableRange;
|
|
||||||
|
|
||||||
Status = ArbInitializeArbiterInstance(&IopRootMemArbiter,
|
|
||||||
NULL,
|
|
||||||
CmResourceTypeMemory,
|
|
||||||
L"RootMemory",
|
|
||||||
L"Root",
|
|
||||||
IopGenericTranslateOrdering);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
DPRINT1("IopMemInitialize: Status %p\n", Status);
|
|
||||||
ASSERT(FALSE);
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = RtlAddRange(IopRootMemArbiter.Allocation,
|
|
||||||
0,
|
|
||||||
(UINT64)(PAGE_SIZE - 1),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
NULL,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Port arbiter */
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
BOOLEAN
|
|
||||||
NTAPI
|
|
||||||
IopPortFindSuitableRange(
|
|
||||||
_In_ PARBITER_INSTANCE Arbiter,
|
|
||||||
_In_ PARBITER_ALLOCATION_STATE State)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
IopPortAddAllocation(
|
|
||||||
_In_ PARBITER_INSTANCE Arbiter,
|
|
||||||
_In_ PARBITER_ALLOCATION_STATE ArbState)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
IopPortBacktrackAllocation(
|
|
||||||
_In_ PARBITER_INSTANCE Arbiter,
|
|
||||||
_Inout_ PARBITER_ALLOCATION_STATE ArbState)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
CODE_SEG("PAGE")
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IopPortInitialize(VOID)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
DPRINT("IopRootPortArbiter %p\n", &IopRootPortArbiter);
|
|
||||||
|
|
||||||
IopRootPortArbiter.UnpackRequirement = IopGenericUnpackRequirement;
|
|
||||||
IopRootPortArbiter.PackResource = IopGenericPackResource;
|
|
||||||
IopRootPortArbiter.UnpackResource = IopGenericUnpackResource;
|
|
||||||
IopRootPortArbiter.ScoreRequirement = IopGenericScoreRequirement;
|
|
||||||
|
|
||||||
IopRootPortArbiter.FindSuitableRange = IopPortFindSuitableRange;
|
|
||||||
IopRootPortArbiter.AddAllocation = IopPortAddAllocation;
|
|
||||||
IopRootPortArbiter.BacktrackAllocation = IopPortBacktrackAllocation;
|
|
||||||
|
|
||||||
Status = ArbInitializeArbiterInstance(&IopRootPortArbiter,
|
|
||||||
NULL,
|
|
||||||
CmResourceTypePort,
|
|
||||||
L"RootPort",
|
|
||||||
L"Root",
|
|
||||||
IopGenericTranslateOrdering);
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
@@ -28,11 +28,11 @@ ARBITER_INSTANCE IopRootPortArbiter;
|
|||||||
|
|
||||||
extern KEVENT PiEnumerationFinished;
|
extern KEVENT PiEnumerationFinished;
|
||||||
|
|
||||||
NTSTATUS NTAPI IopPortInitialize(VOID);
|
NTSTATUS NTAPI IopArbPortInitialize(VOID);
|
||||||
NTSTATUS NTAPI IopMemInitialize(VOID);
|
NTSTATUS NTAPI IopArbMemInitialize(VOID);
|
||||||
NTSTATUS NTAPI IopDmaInitialize(VOID);
|
NTSTATUS NTAPI IopArbDmaInitialize(VOID);
|
||||||
NTSTATUS NTAPI IopIrqInitialize(VOID);
|
NTSTATUS NTAPI IopArbIrqInitialize(VOID);
|
||||||
NTSTATUS NTAPI IopBusNumberInitialize(VOID);
|
NTSTATUS NTAPI IopArbBusNumberInitialize(VOID);
|
||||||
|
|
||||||
/* FUNCTIONS ******************************************************************/
|
/* FUNCTIONS ******************************************************************/
|
||||||
|
|
||||||
@@ -50,38 +50,38 @@ IopInitializeArbiters(VOID)
|
|||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
Status = IopPortInitialize();
|
Status = IopArbPortInitialize();
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("IopPortInitialize() return %X\n", Status);
|
DPRINT1("IopArbPortInitialize() return %X\n", Status);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = IopMemInitialize();
|
Status = IopArbMemInitialize();
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("IopMemInitialize() return %X\n", Status);
|
DPRINT1("IopArbMemInitialize() return %X\n", Status);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = IopDmaInitialize();
|
Status = IopArbDmaInitialize();
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("IopDmaInitialize() return %X\n", Status);
|
DPRINT1("IopArbDmaInitialize() return %X\n", Status);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = IopIrqInitialize();
|
Status = IopArbIrqInitialize();
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("IopIrqInitialize() return %X\n", Status);
|
DPRINT1("IopArbIrqInitialize() return %X\n", Status);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = IopBusNumberInitialize();
|
Status = IopArbBusNumberInitialize();
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("IopBusNumberInitialize() return %X\n", Status);
|
DPRINT1("IopArbBusNumberInitialize() return %X\n", Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
|||||||
+5
-1
@@ -149,7 +149,11 @@ list(APPEND SOURCE
|
|||||||
${REACTOS_SOURCE_DIR}/ntoskrnl/io/iomgr/symlink.c
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/iomgr/symlink.c
|
||||||
${REACTOS_SOURCE_DIR}/ntoskrnl/io/iomgr/util.c
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/iomgr/util.c
|
||||||
${REACTOS_SOURCE_DIR}/ntoskrnl/io/iomgr/volume.c
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/iomgr/volume.c
|
||||||
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/arbiters.c
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/arb/arbbus.c
|
||||||
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/arb/arbdma.c
|
||||||
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/arb/arbirq.c
|
||||||
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/arb/arbmem.c
|
||||||
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/arb/arbport.c
|
||||||
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/devaction.c
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/devaction.c
|
||||||
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/devnode.c
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/devnode.c
|
||||||
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/plugplay.c
|
${REACTOS_SOURCE_DIR}/ntoskrnl/io/pnpmgr/plugplay.c
|
||||||
|
|||||||
Reference in New Issue
Block a user