ReactOS 0.4.17-dev-1281-g065abb3
intr.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS xHCI Host Controller Driver
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Interrupts, event rings and event dispatch
5 * COPYRIGHT: Copyright 2026 Justin Miller <justin.miller@reactos.org>
6 */
7
8#pragma once
9
10class XhciController;
11
14{
15public:
17 Create(
19
23 _In_ WDFIORESREQLIST Requirements);
24
26 Prepare(
27 _In_ WDFCMRESLIST Raw,
28 _In_ WDFCMRESLIST Translated);
29 VOID Release();
30
33 D0Entry(
34 _In_ BOOLEAN StatePreserved);
36 VOID D0Exit();
38
39 ULONG Count() const;
40
43
45 ULONG
47 _In_ ULONG ProcessorIndex) const;
48
49
53 _In_ WDFIORESREQLIST Requirements);
54
57 {
59 WDFINTERRUPT Interrupt;
64
80
81 WDFWORKITEM Requeue;
85 };
86
87private:
88 enum class Mechanism : ULONG
89 {
90 Line,
91 Msi,
92 MsiX
93 };
94
97 _Inout_ Interrupter* Entry,
98 _In_ WDFINTERRUPT Interrupt,
100 _In_ BOOLEAN MessageSignaled);
101
102 VOID
104 _Inout_ Interrupter* Entry);
105
110 _Out_ WDFINTERRUPT* Interrupt);
111
112 ULONG
114 _In_ ULONG Messages) const;
115
117
119 WDFINTERRUPT m_PrimaryInterrupt;
127};
unsigned char BOOLEAN
Definition: actypes.h:127
LONG NTSTATUS
Definition: precomp.h:26
@ Create
Definition: registry.c:563
VOID PostReset()
Definition: intr.cpp:1386
NTSTATUS PrepareOne(_Inout_ Interrupter *Entry, _In_ WDFINTERRUPT Interrupt, _In_ ULONG Index, _In_ BOOLEAN MessageSignaled)
Definition: intr.cpp:1009
VOID D0Exit()
Definition: intr.cpp:1380
PUSHORT m_Lookup
Definition: intr.h:125
XhciController * m_Controller
Definition: intr.h:118
Interrupter * m_Table
Definition: intr.h:124
VOID ReleaseOne(_Inout_ Interrupter *Entry)
Definition: intr.cpp:1267
Mechanism m_Mechanism
Definition: intr.h:120
ULONG m_Count
Definition: intr.h:122
WDFINTERRUPT m_PrimaryInterrupt
Definition: intr.h:119
ULONG m_SecondaryCount
Definition: intr.h:121
NTSTATUS AffinitizeResourceRequirements(_In_ WDFIORESREQLIST Requirements)
Definition: intr.cpp:952
NTSTATUS Prepare(_In_ WDFCMRESLIST Raw, _In_ WDFCMRESLIST Translated)
Definition: intr.cpp:1104
NTSTATUS FilterResourceRequirements(_In_ WDFIORESREQLIST Requirements)
Definition: intr.cpp:921
VOID D0ExitPreInterruptsDisabled()
Definition: intr.cpp:1347
ULONG m_Capacity
Definition: intr.h:123
NTSTATUS CreateInterrupt(_In_opt_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Raw, _In_opt_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Translated, _Out_ WDFINTERRUPT *Interrupt)
Definition: intr.cpp:866
NTSTATUS BuildLookup()
Definition: intr.cpp:1228
ULONG Count() const
Definition: intr.cpp:1407
ULONG SecondaryCountFor(_In_ ULONG Messages) const
Definition: intr.cpp:894
ULONG TargetForProcessor(_In_ ULONG ProcessorIndex) const
Definition: intr.cpp:1419
ULONG m_LookupSize
Definition: intr.h:126
ULONG TargetForCurrentProcessor() const
Definition: intr.cpp:1413
VOID Release()
Definition: intr.cpp:1296
PLIST_ENTRY Entry
Definition: devhcd.cpp:1262
ULONG_PTR KAFFINITY
Definition: compat.h:85
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
_Out_ PULONG _Out_ PULONG Messages
Definition: intr.cpp:724
#define _Inout_
Definition: no_sal2.h:162
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
unsigned short USHORT
Definition: pedump.c:61
@ Raw
Definition: sacdrv.h:279
XhciDmaBuffer * Segment
Definition: intr.h:77
XhciController * Controller
Definition: intr.h:58
LIST_ENTRY SegmentList
Definition: intr.h:78
WDFINTERRUPT Interrupt
Definition: intr.h:59
XhciDmaBuffer * Erst
Definition: intr.h:79
Definition: typedefs.h:120
uint16_t * PUSHORT
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
Definition: wdfinterrupt.h:379