ReactOS 0.4.17-dev-684-ga6524ef
arbbus.c File Reference
#include <ntoskrnl.h>
#include <debug.h>
Include dependency graph for arbbus.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

NTSTATUS NTAPI IopArbBusNumberUnpackRequirements (_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor, _Out_ PUINT64 OutMinimumAddress, _Out_ PUINT64 OutMaximumAddress, _Out_ PUINT64 OutLength, _Out_ PUINT64 OutAlignment)
 
NTSTATUS NTAPI IopArbBusNumberPackResource (_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor, _In_ UINT64 Start, _Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
 
NTSTATUS NTAPI IopArbBusNumberUnpackResource (_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor, _Out_ PUINT64 Start, _Out_ PUINT64 OutLength)
 
INT32 NTAPI IopArbBusNumberScoreRequirement (_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
 
NTSTATUS NTAPI IopArbBusNumberInitialize (VOID)
 Initialize the RootBusArbiter.
 

Variables

ARBITER_INSTANCE IopRootBusNumberArbiter
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 11 of file arbbus.c.

Function Documentation

◆ IopArbBusNumberInitialize()

NTSTATUS NTAPI IopArbBusNumberInitialize ( VOID  )

Initialize the RootBusArbiter.

The root bus-number arbiter owns the flat 0..255 bus-number space and hands each bridge a sub-range.

Returns
NTSTATUS
Return values
STATUS_SUCCESS
STATUS_UNSUCCESSFUL
STATUS_INSUFFICIENT_RESOURCES

Definition at line 100 of file arbbus.c.

101{
103
104 PAGED_CODE();
105 IopRootBusNumberArbiter.Name = L"RootBusNumber";
110
112 NULL,
115 L"Root",
116 NULL);
117 if (!NT_SUCCESS(Status))
118 {
119 DPRINT1("IopArbBusNumberInitialize: Failed with %X", Status);
120 }
121
122 return Status;
123}
#define PAGED_CODE()
ARBITER_INSTANCE IopRootBusNumberArbiter
Definition: pnpinit.c:23
NTSTATUS NTAPI IopArbBusNumberPackResource(_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor, _In_ UINT64 Start, _Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
Definition: arbbus.c:41
NTSTATUS NTAPI IopArbBusNumberUnpackResource(_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor, _Out_ PUINT64 Start, _Out_ PUINT64 OutLength)
Definition: arbbus.c:59
NTSTATUS NTAPI IopArbBusNumberUnpackRequirements(_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor, _Out_ PUINT64 OutMinimumAddress, _Out_ PUINT64 OutMaximumAddress, _Out_ PUINT64 OutLength, _Out_ PUINT64 OutAlignment)
Definition: arbbus.c:22
INT32 NTAPI IopArbBusNumberScoreRequirement(_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
Definition: arbbus.c:74
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: arbiter.c:299
LONG NTSTATUS
Definition: precomp.h:26
#define DPRINT1
Definition: precomp.h:8
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define L(x)
Definition: resources.c:13
Status
Definition: gdiplustypes.h:24
#define CmResourceTypeBusNumber
Definition: restypes.h:109
PARB_UNPACK_RESOURCE UnpackResource
Definition: arbiter.h:294
PARB_SCORE_REQUIREMENT ScoreRequirement
Definition: arbiter.h:295
PARB_UNPACK_REQUIREMENT UnpackRequirement
Definition: arbiter.h:292
PARB_PACK_RESOURCE PackResource
Definition: arbiter.h:293
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132

Referenced by IopInitializeArbiters().

◆ IopArbBusNumberPackResource()

NTSTATUS NTAPI IopArbBusNumberPackResource ( _In_ PIO_RESOURCE_DESCRIPTOR  IoDescriptor,
_In_ UINT64  Start,
_Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR  CmDescriptor 
)

Definition at line 41 of file arbbus.c.

45{
46 PAGED_CODE();
47
48 CmDescriptor->Type = CmResourceTypeBusNumber;
49 CmDescriptor->ShareDisposition = IoDescriptor->ShareDisposition;
50 CmDescriptor->Flags = IoDescriptor->Flags;
51 CmDescriptor->u.BusNumber.Start = (ULONG)Start;
52 CmDescriptor->u.BusNumber.Length = IoDescriptor->u.BusNumber.Length;
53
54 return STATUS_SUCCESS;
55}
static _Out_opt_ PULONGLONG Start
#define STATUS_SUCCESS
Definition: shellext.h:65
uint32_t ULONG
Definition: typedefs.h:59

Referenced by IopArbBusNumberInitialize().

◆ IopArbBusNumberScoreRequirement()

INT32 NTAPI IopArbBusNumberScoreRequirement ( _In_ PIO_RESOURCE_DESCRIPTOR  IoDescriptor)

Definition at line 74 of file arbbus.c.

76{
77 PAGED_CODE();
78
79 ASSERT(IoDescriptor->u.BusNumber.Length != 0);
80 if (IoDescriptor->u.BusNumber.Length == 0)
81 return -1;
82
83 return (IoDescriptor->u.BusNumber.MaxBusNumber - IoDescriptor->u.BusNumber.MinBusNumber)
84 / IoDescriptor->u.BusNumber.Length;
85}
#define ASSERT(a)
Definition: mode.c:44

Referenced by IopArbBusNumberInitialize().

◆ IopArbBusNumberUnpackRequirements()

NTSTATUS NTAPI IopArbBusNumberUnpackRequirements ( _In_ PIO_RESOURCE_DESCRIPTOR  IoDescriptor,
_Out_ PUINT64  OutMinimumAddress,
_Out_ PUINT64  OutMaximumAddress,
_Out_ PUINT64  OutLength,
_Out_ PUINT64  OutAlignment 
)

Definition at line 22 of file arbbus.c.

28{
29 PAGED_CODE();
30
31 *OutMinimumAddress = IoDescriptor->u.BusNumber.MinBusNumber;
32 *OutMaximumAddress = IoDescriptor->u.BusNumber.MaxBusNumber;
33 *OutLength = IoDescriptor->u.BusNumber.Length;
34 *OutAlignment = 1;
35
36 return STATUS_SUCCESS;
37}

Referenced by IopArbBusNumberInitialize().

◆ IopArbBusNumberUnpackResource()

NTSTATUS NTAPI IopArbBusNumberUnpackResource ( _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR  CmDescriptor,
_Out_ PUINT64  Start,
_Out_ PUINT64  OutLength 
)

Definition at line 59 of file arbbus.c.

63{
64 PAGED_CODE();
65
66 *Start = CmDescriptor->u.BusNumber.Start;
67 *OutLength = CmDescriptor->u.BusNumber.Length;
68
69 return STATUS_SUCCESS;
70}

Referenced by IopArbBusNumberInitialize().

Variable Documentation

◆ IopRootBusNumberArbiter

ARBITER_INSTANCE IopRootBusNumberArbiter
extern

Definition at line 23 of file pnpinit.c.

Referenced by IopArbBusNumberInitialize().