Skip to content

Commit 094b7d9

Browse files
committed
[FORMATTING] Start Kernel Arbiter with clean instance
1 parent b37aafe commit 094b7d9

File tree

8 files changed

+595
-530
lines changed

8 files changed

+595
-530
lines changed

ntoskrnl/io/pnpmgr/arb/arbbus.c

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/*
2+
* PROJECT: ReactOS Kernel
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: PnP manager Root Bus Arbiter
5+
* COPYRIGHT: Copyright 2025 Justin Miller <[email protected]>
6+
*/
7+
8+
/* INCLUDES *****************************************************************/
9+
10+
#include <ntoskrnl.h>
11+
#define NDEBUG
12+
#include <debug.h>
13+
14+
/* GLOBALS *******************************************************************/
15+
16+
extern ARBITER_INSTANCE IopRootBusNumberArbiter;
17+
18+
/* FUNCTIONS *****************************************************************/
19+
20+
NTSTATUS
21+
NTAPI
22+
IopArbBusNumberUnpackRequirements(
23+
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
24+
_Out_ PUINT64 OutMinimumAddress,
25+
_Out_ PUINT64 OutMaximumAddress,
26+
_Out_ PUINT32 OutLength,
27+
_Out_ PUINT32 OutAlignment)
28+
{
29+
PAGED_CODE();
30+
DPRINT("IopArbBusNumberUnpackRequirements: IoDescriptor: %p, OutMinimumAddress: %p, OutMaximumAddress: %p, OutLength: %p, OutAlignment: %p\n",
31+
IoDescriptor,
32+
OutMinimumAddress,
33+
OutMaximumAddress,
34+
OutLength,
35+
OutAlignment);
36+
37+
UNIMPLEMENTED;
38+
return STATUS_NOT_IMPLEMENTED;
39+
}
40+
41+
NTSTATUS
42+
NTAPI
43+
IopArbBusNumberPackResource(
44+
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
45+
_In_ UINT64 Start,
46+
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
47+
{
48+
PAGED_CODE();
49+
DPRINT("IopArbBusNumberPackResource: IoDescriptor: %p, Start: %I64x, CmDescriptor: %p\n",
50+
IoDescriptor,
51+
Start,
52+
CmDescriptor);
53+
54+
UNIMPLEMENTED;
55+
return STATUS_NOT_IMPLEMENTED;
56+
}
57+
58+
NTSTATUS
59+
NTAPI
60+
IopArbBusNumberUnpackResource(
61+
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
62+
_Out_ PUINT64 Start,
63+
_Out_ PUINT32 OutLength)
64+
{
65+
PAGED_CODE();
66+
DPRINT("IopArbBusNumberUnpackResource: CmDescriptor: %p, Start: %p, OutLength: %p\n",
67+
CmDescriptor,
68+
Start,
69+
OutLength);
70+
71+
UNIMPLEMENTED;
72+
return STATUS_NOT_IMPLEMENTED;
73+
}
74+
75+
INT32
76+
NTAPI
77+
IopArbBusNumberScoreRequirement(
78+
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
79+
{
80+
PAGED_CODE();
81+
DPRINT("IopArbBusNumberScoreRequirement: IoDescriptor: %p\n",
82+
IoDescriptor);
83+
84+
UNIMPLEMENTED;
85+
return 0;
86+
}
87+
88+
/**
89+
* @brief Initialize the RootBusArbiter
90+
*
91+
* Initializes rootbus arbiter against IopRootBusNumberArbiter for use in PCI
92+
* every "bus" gets to check against this.
93+
* @return NTSTATUS
94+
* @retval STATUS_SUCCESS
95+
* @retval STATUS_UNSUCCESSFUL
96+
* @retval STATUS_INSUFFICIENT_RESOURCES
97+
*/
98+
NTSTATUS
99+
NTAPI
100+
IopArbBusNumberInitialize(VOID)
101+
{
102+
NTSTATUS Status = STATUS_UNSUCCESSFUL;
103+
104+
PAGED_CODE();
105+
IopRootBusNumberArbiter.Name = L"RootBusNumber";
106+
IopRootBusNumberArbiter.UnpackRequirement = IopArbBusNumberUnpackRequirements;
107+
IopRootBusNumberArbiter.PackResource = IopArbBusNumberPackResource;
108+
IopRootBusNumberArbiter.UnpackResource = IopArbBusNumberUnpackResource;
109+
IopRootBusNumberArbiter.ScoreRequirement = IopArbBusNumberScoreRequirement;
110+
111+
Status = ArbInitializeArbiterInstance(&IopRootBusNumberArbiter,
112+
NULL,
113+
CmResourceTypeBusNumber,
114+
IopRootBusNumberArbiter.Name,
115+
L"Root",
116+
NULL);
117+
if (!NT_SUCCESS(Status))
118+
{
119+
DPRINT1("IopArbBusNumberInitialize: Failed with %X", Status);
120+
}
121+
122+
return Status;
123+
}

ntoskrnl/io/pnpmgr/arb/arbdma.c

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
/*
2+
* PROJECT: ReactOS Kernel
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: PnP manager Root DMA Arbiter
5+
* COPYRIGHT: Copyright 2025 Justin Miller <[email protected]>
6+
*/
7+
8+
/* INCLUDES *****************************************************************/
9+
10+
#include <ntoskrnl.h>
11+
#define NDEBUG
12+
#include <debug.h>
13+
14+
/* GLOBALS *******************************************************************/
15+
16+
extern ARBITER_INSTANCE IopRootDmaArbiter;
17+
18+
/* FUNCTIONS *****************************************************************/
19+
20+
NTSTATUS
21+
NTAPI
22+
IopArbDmaUnpackRequirements(
23+
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
24+
_Out_ PUINT64 OutMinimumAddress,
25+
_Out_ PUINT64 OutMaximumAddress,
26+
_Out_ PUINT32 OutLength,
27+
_Out_ PUINT32 OutAlignment)
28+
{
29+
PAGED_CODE();
30+
DPRINT("IopArbDmaUnpackRequirements: IoDescriptor: %p, OutMinimumAddress: %p, OutMaximumAddress: %p, OutLength: %p, OutAlignment: %p\n",
31+
IoDescriptor,
32+
OutMinimumAddress,
33+
OutMaximumAddress,
34+
OutLength,
35+
OutAlignment);
36+
37+
UNIMPLEMENTED;
38+
return STATUS_NOT_IMPLEMENTED;
39+
}
40+
41+
NTSTATUS
42+
NTAPI
43+
IopArbDmaPackResource(
44+
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
45+
_In_ UINT64 Start,
46+
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
47+
{
48+
PAGED_CODE();
49+
DPRINT("IopArbDmaPackResource: IoDescriptor: %p, Start: %p, CmDescriptor: %p\n",
50+
IoDescriptor,
51+
Start,
52+
CmDescriptor);
53+
54+
UNIMPLEMENTED;
55+
return STATUS_NOT_IMPLEMENTED;
56+
}
57+
58+
NTSTATUS
59+
NTAPI
60+
IopArbDmaUnpackResource(
61+
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
62+
_Out_ PUINT64 Start,
63+
_Out_ PUINT32 OutLength)
64+
{
65+
PAGED_CODE();
66+
DPRINT("IopArbDmaUnpackResource: CmDescriptor: %p, Start: %p, OutLength: %p\n",
67+
CmDescriptor,
68+
Start,
69+
OutLength);
70+
71+
UNIMPLEMENTED;
72+
return STATUS_NOT_IMPLEMENTED;
73+
}
74+
75+
INT32
76+
NTAPI
77+
IopArbDmaScoreRequirement(
78+
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
79+
{
80+
PAGED_CODE();
81+
DPRINT("IopArbDmaScoreRequirement: IoDescriptor: %p\n",
82+
IoDescriptor);
83+
84+
UNIMPLEMENTED;
85+
return 0;
86+
}
87+
88+
NTSTATUS
89+
NTAPI
90+
IopArbDmaInitialize(VOID)
91+
{
92+
NTSTATUS Status = STATUS_UNSUCCESSFUL;
93+
94+
PAGED_CODE();
95+
IopRootDmaArbiter.Name = L"RootDma";
96+
IopRootDmaArbiter.UnpackRequirement = IopArbDmaUnpackRequirements;
97+
IopRootDmaArbiter.PackResource = IopArbDmaPackResource;
98+
IopRootDmaArbiter.UnpackResource = IopArbDmaUnpackResource;
99+
IopRootDmaArbiter.ScoreRequirement = IopArbDmaScoreRequirement;
100+
101+
Status = ArbInitializeArbiterInstance(&IopRootDmaArbiter,
102+
NULL,
103+
CmResourceTypeBusNumber,
104+
IopRootDmaArbiter.Name,
105+
L"Root",
106+
NULL);
107+
if (!NT_SUCCESS(Status))
108+
{
109+
DPRINT1("IopArbDmaInitialize: Failed with %X", Status);
110+
}
111+
112+
return Status;
113+
}

ntoskrnl/io/pnpmgr/arb/arbirq.c

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
/*
2+
* PROJECT: ReactOS Kernel
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: PnP manager Root IRQ Arbiter
5+
* COPYRIGHT: Copyright 2025 Justin Miller <[email protected]>
6+
*/
7+
8+
/* INCLUDES *****************************************************************/
9+
10+
#include <ntoskrnl.h>
11+
#define NDEBUG
12+
#include <debug.h>
13+
14+
/* GLOBALS *******************************************************************/
15+
16+
extern ARBITER_INSTANCE IopRootIrqArbiter;
17+
18+
/* FUNCTIONS *****************************************************************/
19+
20+
NTSTATUS
21+
NTAPI
22+
IopArbIrqUnpackRequirements(
23+
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
24+
_Out_ PUINT64 OutMinimumAddress,
25+
_Out_ PUINT64 OutMaximumAddress,
26+
_Out_ PUINT32 OutLength,
27+
_Out_ PUINT32 OutAlignment)
28+
{
29+
PAGED_CODE();
30+
DPRINT("IopArbIrqUnpackRequirements: IoDescriptor: %p, OutMinimumAddress: %p, OutMaximumAddress: %p, OutLength: %p, OutAlignment: %p\n",
31+
IoDescriptor,
32+
OutMinimumAddress,
33+
OutMaximumAddress,
34+
OutLength,
35+
OutAlignment);
36+
37+
UNIMPLEMENTED;
38+
return STATUS_NOT_IMPLEMENTED;
39+
}
40+
41+
NTSTATUS
42+
NTAPI
43+
IopArbIrqPackResource(
44+
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
45+
_In_ UINT64 Start,
46+
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
47+
{
48+
PAGED_CODE();
49+
DPRINT("IopArbIrqPackResource: IoDescriptor: %p, Start: %p, CmDescriptor: %p\n",
50+
IoDescriptor,
51+
Start,
52+
CmDescriptor);
53+
54+
UNIMPLEMENTED;
55+
return STATUS_NOT_IMPLEMENTED;
56+
}
57+
58+
NTSTATUS
59+
NTAPI
60+
IopArbIrqUnpackResource(
61+
_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor,
62+
_Out_ PUINT64 Start,
63+
_Out_ PUINT32 OutLength)
64+
{
65+
PAGED_CODE();
66+
DPRINT("IopArbIrqUnpackResource: CmDescriptor: %p, Start: %p, OutLength: %p\n",
67+
CmDescriptor,
68+
Start,
69+
OutLength);
70+
71+
UNIMPLEMENTED;
72+
return STATUS_NOT_IMPLEMENTED;
73+
}
74+
75+
INT32
76+
NTAPI
77+
IopArbIrqScoreRequirement(
78+
_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
79+
{
80+
PAGED_CODE();
81+
DPRINT("IopArbIrqScoreRequirement: IoDescriptor: %p\n",
82+
IoDescriptor);
83+
84+
UNIMPLEMENTED;
85+
return 0;
86+
}
87+
88+
NTSTATUS
89+
NTAPI
90+
IopArbIrqInitialize(VOID)
91+
{
92+
NTSTATUS Status = STATUS_UNSUCCESSFUL;
93+
94+
PAGED_CODE();
95+
IopRootIrqArbiter.Name = L"RootIRQ";
96+
IopRootIrqArbiter.UnpackRequirement = IopArbIrqUnpackRequirements;
97+
IopRootIrqArbiter.PackResource = IopArbIrqPackResource;
98+
IopRootIrqArbiter.UnpackResource = IopArbIrqUnpackResource;
99+
IopRootIrqArbiter.ScoreRequirement = IopArbIrqScoreRequirement;
100+
101+
Status = ArbInitializeArbiterInstance(&IopRootIrqArbiter,
102+
NULL,
103+
CmResourceTypeBusNumber,
104+
IopRootIrqArbiter.Name,
105+
L"Root",
106+
NULL);
107+
if (!NT_SUCCESS(Status))
108+
{
109+
DPRINT1("IopArbDmaInitialize: Failed with %X", Status);
110+
}
111+
112+
return Status;
113+
}

0 commit comments

Comments
 (0)