ReactOS 0.4.17-dev-1281-g065abb3
cmdring.cpp File Reference
#include "xhcidrv.h"
#include <debug.h>
Include dependency graph for cmdring.cpp:

Go to the source code of this file.

Classes

struct  _XHCI_COMMAND_TIMER_CONTEXT
 

Macros

#define NDEBUG
 

Typedefs

typedef struct _XHCI_COMMAND_TIMER_CONTEXT XHCI_COMMAND_TIMER_CONTEXT
 
typedef struct _XHCI_COMMAND_TIMER_CONTEXT * PXHCI_COMMAND_TIMER_CONTEXT
 

Functions

 WDF_DECLARE_CONTEXT_TYPE_WITH_NAME (XHCI_COMMAND_TIMER_CONTEXT, XhciGetCommandTimerContext)
 
static NTSTATUS NTAPI XhciCmdStatusFromCode (_In_ XhciCompletionCode Code)
 
static XhciCommand *NTAPI XhciCmdFromLink (_In_ PLIST_ENTRY Entry)
 
static VOID NTAPI XhciCmdCompleteList (_Inout_ PLIST_ENTRY Finished)
 
static VOID NTAPI XhciCmdWaiterDone (_In_ XhciCommand *Command)
 

Variables

static const ULONG XhciCmdTrbCount = 32
 
static const ULONG XhciCmdUsable = XhciCmdTrbCount - 1
 
static const LONG XhciCmdTicksInitial = 10
 
static const LONG XhciCmdTicksFirstAbort = 5
 
static const LONG XhciCmdTicksAbortWait = 5
 
static const ULONG XhciCmdTickMs = 1000
 
static const ULONG XhciCmdTickSlackMs = 500
 
static const ULONG XhciCmdReasonAbortFailed = 0x1009
 
static const ULONG XhciCmdReasonOutOfOrder = 0x1012
 
static const ULONG XhciCmdReasonDequeueMismatch = 0x1013
 
static const ULONG XhciCmdBlockSetAddress = 0x00000200
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 10 of file cmdring.cpp.

Typedef Documentation

◆ PXHCI_COMMAND_TIMER_CONTEXT

◆ XHCI_COMMAND_TIMER_CONTEXT

Function Documentation

◆ WDF_DECLARE_CONTEXT_TYPE_WITH_NAME()

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME ( XHCI_COMMAND_TIMER_CONTEXT  ,
XhciGetCommandTimerContext   
)

◆ XhciCmdCompleteList()

static VOID NTAPI XhciCmdCompleteList ( _Inout_ PLIST_ENTRY  Finished)
static

Calls Done for every command on the list, in order. No ring lock may be held.

Definition at line 67 of file cmdring.cpp.

69{
71
72 while (!IsListEmpty(Finished))
73 {
76 Command->Done(Command);
77 }
78}
static XhciCommand *NTAPI XhciCmdFromLink(_In_ PLIST_ENTRY Entry)
Definition: cmdring.cpp:57
#define IsListEmpty(ListHead)
Definition: env_spec_w32.h:954
#define RemoveHeadList(ListHead)
Definition: env_spec_w32.h:964
Definition: shell.h:41
FORCEINLINE VOID NTAPI XhciClearListEntry(_Out_ PLIST_ENTRY Entry)
Definition: xhciutil.h:117

Referenced by XhciCommandRing::FailEverything(), XhciCommandRing::HandleRingStopped(), XhciCommandRing::OnCompletionEvent(), XhciCommandRing::OnTimer(), XhciCommandRing::PostReset(), XhciCommandRing::PostResetSuccess(), and XhciCommandRing::Release().

◆ XhciCmdFromLink()

static XhciCommand *NTAPI XhciCmdFromLink ( _In_ PLIST_ENTRY  Entry)
static

◆ XhciCmdStatusFromCode()

static NTSTATUS NTAPI XhciCmdStatusFromCode ( _In_ XhciCompletionCode  Code)
static

Definition at line 42 of file cmdring.cpp.

44{
46 return STATUS_SUCCESS;
47
49 return STATUS_IO_TIMEOUT;
50
52}
#define STATUS_SUCCESS
Definition: shellext.h:65
#define STATUS_IO_TIMEOUT
Definition: udferr_usr.h:163
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
_In_ UCHAR _In_ UCHAR _In_ ULONG Code
Definition: wdfdevice.h:1707

Referenced by XhciCommandRing::OnCompletionEvent().

◆ XhciCmdWaiterDone()

static VOID NTAPI XhciCmdWaiterDone ( _In_ XhciCommand *  Command)
static

Definition at line 83 of file cmdring.cpp.

85{
86 PKEVENT Event = Command->WaiterEvent;
87
88 if (Command->WaiterDone)
89 Command->WaiterDone(Command);
90
92}
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
Definition: dispmprt.h:1287
#define FALSE
Definition: types.h:117
#define KeSetEvent(pEvt, foo, foo2)
Definition: env_spec_w32.h:476
#define IO_NO_INCREMENT
Definition: iotypes.h:598

Variable Documentation

◆ XhciCmdBlockSetAddress

const ULONG XhciCmdBlockSetAddress = 0x00000200
static

Definition at line 30 of file cmdring.cpp.

Referenced by XhciCommandRing::OnTimer().

◆ XhciCmdReasonAbortFailed

const ULONG XhciCmdReasonAbortFailed = 0x1009
static

Definition at line 25 of file cmdring.cpp.

Referenced by XhciCommandRing::OnTimer().

◆ XhciCmdReasonDequeueMismatch

const ULONG XhciCmdReasonDequeueMismatch = 0x1013
static

Definition at line 27 of file cmdring.cpp.

Referenced by XhciCommandRing::HandleRingStopped().

◆ XhciCmdReasonOutOfOrder

const ULONG XhciCmdReasonOutOfOrder = 0x1012
static

Definition at line 26 of file cmdring.cpp.

Referenced by XhciCommandRing::OnCompletionEvent().

◆ XhciCmdTickMs

const ULONG XhciCmdTickMs = 1000
static

Definition at line 21 of file cmdring.cpp.

Referenced by XhciCommandRing::Create(), and XhciCommandRing::PutOnRingLocked().

◆ XhciCmdTicksAbortWait

const LONG XhciCmdTicksAbortWait = 5
static

Definition at line 20 of file cmdring.cpp.

Referenced by XhciCommandRing::OnTimer().

◆ XhciCmdTicksFirstAbort

const LONG XhciCmdTicksFirstAbort = 5
static

◆ XhciCmdTicksInitial

◆ XhciCmdTickSlackMs

const ULONG XhciCmdTickSlackMs = 500
static

Definition at line 22 of file cmdring.cpp.

Referenced by XhciCommandRing::Create().

◆ XhciCmdTrbCount

const ULONG XhciCmdTrbCount = 32
static

Definition at line 14 of file cmdring.cpp.

Referenced by XhciCommandRing::InitializeRing(), and XhciCommandRing::Prepare().

◆ XhciCmdUsable