|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XENVIF PATCH v2 3/4] receiver: Map out IRQL annotations
No functional changes.
Signed-off-by: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx>
---
src/xenvif/receiver.c | 40 ++++++++++++++++++++++++++++++++++------
src/xenvif/receiver.h | 18 ++++++++++++++++++
2 files changed, 52 insertions(+), 6 deletions(-)
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 783f49c..8e6ec7f 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -1330,6 +1330,8 @@ fail1:
1);
}
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
static FORCEINLINE VOID
__ReceiverRingSwizzle(
IN PXENVIF_RECEIVER_RING Ring
@@ -1571,8 +1573,8 @@ __ReceiverRingSwizzle(
}
}
+_IRQL_requires_(DISPATCH_LEVEL)
static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
__ReceiverRingAcquireLock(
IN PXENVIF_RECEIVER_RING Ring
)
@@ -1582,6 +1584,7 @@ __ReceiverRingAcquireLock(
KeAcquireSpinLockAtDpcLevel(&Ring->Lock);
}
+_IRQL_requires_(DISPATCH_LEVEL)
static DECLSPEC_NOINLINE VOID
ReceiverRingAcquireLock(
IN PXENVIF_RECEIVER_RING Ring
@@ -1590,8 +1593,8 @@ ReceiverRingAcquireLock(
__ReceiverRingAcquireLock(Ring);
}
+_IRQL_requires_(DISPATCH_LEVEL)
static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
__ReceiverRingReleaseLock(
IN PXENVIF_RECEIVER_RING Ring
)
@@ -1602,6 +1605,7 @@ __ReceiverRingReleaseLock(
KeReleaseSpinLockFromDpcLevel(&Ring->Lock);
}
+_IRQL_requires_(DISPATCH_LEVEL)
static DECLSPEC_NOINLINE VOID
ReceiverRingReleaseLock(
IN PXENVIF_RECEIVER_RING Ring
@@ -1610,10 +1614,10 @@ ReceiverRingReleaseLock(
__ReceiverRingReleaseLock(Ring);
}
-__drv_functionClass(KDEFERRED_ROUTINE)
-__drv_maxIRQL(DISPATCH_LEVEL)
-__drv_minIRQL(PASSIVE_LEVEL)
-__drv_sameIRQL
+_Function_class_(KDEFERRED_ROUTINE)
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
+_IRQL_requires_same_
static VOID
ReceiverRingQueueDpc(
IN PKDPC Dpc,
@@ -1657,6 +1661,7 @@ __ReceiverRingIsStopped(
return Ring->Stopped;
}
+_IRQL_requires_(DISPATCH_LEVEL)
static FORCEINLINE VOID
__ReceiverRingTrigger(
IN PXENVIF_RECEIVER_RING Ring,
@@ -1701,6 +1706,7 @@ __ReceiverRingSend(
__ReceiverRingReleaseLock(Ring);
}
+_IRQL_requires_(DISPATCH_LEVEL)
static FORCEINLINE VOID
__ReceiverRingReturnPacket(
IN PXENVIF_RECEIVER_RING Ring,
@@ -2005,6 +2011,7 @@ __ReceiverRingQueuePacket(
} while (InterlockedCompareExchangePointer(&Ring->PacketQueue, (PVOID)New,
(PVOID)Old) != Old);
}
+_IRQL_requires_(DISPATCH_LEVEL)
static DECLSPEC_NOINLINE ULONG
ReceiverRingPoll(
IN PXENVIF_RECEIVER_RING Ring
@@ -2312,6 +2319,7 @@ ReceiverRingPollDpc(
KSERVICE_ROUTINE ReceiverRingEvtchnCallback;
+_Use_decl_annotations_
BOOLEAN
ReceiverRingEvtchnCallback(
IN PKINTERRUPT InterruptObject,
@@ -2870,6 +2878,7 @@ fail1:
return status;
}
+_IRQL_requires_(DISPATCH_LEVEL)
static FORCEINLINE VOID
__ReceiverRingDisable(
IN PXENVIF_RECEIVER_RING Ring
@@ -3076,6 +3085,7 @@ ReceiverDebugCallback(
Receiver->Returned);
}
+_IRQL_requires_(PASSIVE_LEVEL)
NTSTATUS
ReceiverInitialize(
IN PXENVIF_FRONTEND Frontend,
@@ -3249,6 +3259,7 @@ fail1:
return status;
}
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverConnect(
IN PXENVIF_RECEIVER Receiver
@@ -3434,6 +3445,7 @@ fail1:
return status;
}
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverStoreWrite(
IN PXENVIF_RECEIVER Receiver,
@@ -3518,6 +3530,7 @@ fail1:
return status;
}
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverEnable(
IN PXENVIF_RECEIVER Receiver
@@ -3561,6 +3574,7 @@ fail1:
return status;
}
+_IRQL_requires_(DISPATCH_LEVEL)
VOID
ReceiverDisable(
IN PXENVIF_RECEIVER Receiver
@@ -3583,6 +3597,7 @@ ReceiverDisable(
Trace("<====\n");
}
+_IRQL_requires_(DISPATCH_LEVEL)
VOID
ReceiverDisconnect(
IN PXENVIF_RECEIVER Receiver
@@ -3618,6 +3633,7 @@ ReceiverDisconnect(
Trace("<====\n");
}
+_IRQL_requires_(PASSIVE_LEVEL)
VOID
ReceiverTeardown(
IN PXENVIF_RECEIVER Receiver
@@ -3678,6 +3694,7 @@ ReceiverTeardown(
__ReceiverFree(Receiver);
}
+_IRQL_requires_(DISPATCH_LEVEL)
VOID
ReceiverSetOffloadOptions(
IN PXENVIF_RECEIVER Receiver,
@@ -3708,6 +3725,7 @@ ReceiverSetOffloadOptions(
}
}
+_IRQL_requires_(DISPATCH_LEVEL)
VOID
ReceiverSetBackfillSize(
IN PXENVIF_RECEIVER Receiver,
@@ -3734,6 +3752,7 @@ ReceiverSetBackfillSize(
}
}
+_IRQL_requires_(DISPATCH_LEVEL)
VOID
ReceiverQueryRingSize(
IN PXENVIF_RECEIVER Receiver,
@@ -3745,6 +3764,7 @@ ReceiverQueryRingSize(
*Size = XENVIF_RECEIVER_RING_SIZE;
}
+_IRQL_requires_(DISPATCH_LEVEL)
VOID
ReceiverReturnPacket(
IN PXENVIF_RECEIVER Receiver,
@@ -3776,6 +3796,7 @@ ReceiverReturnPacket(
#define XENVIF_RECEIVER_PACKET_WAIT_PERIOD 10
+_IRQL_requires_max_(APC_LEVEL)
VOID
ReceiverWaitForPackets(
IN PXENVIF_RECEIVER Receiver
@@ -3826,6 +3847,7 @@ ReceiverWaitForPackets(
Trace("%s: <====\n", FrontendGetPath(Frontend));
}
+_IRQL_requires_(DISPATCH_LEVEL)
VOID
ReceiverTrigger(
IN PXENVIF_RECEIVER Receiver,
@@ -3839,6 +3861,7 @@ ReceiverTrigger(
__ReceiverRingTrigger(Ring, FALSE);
}
+_IRQL_requires_(DISPATCH_LEVEL)
VOID
ReceiverSend(
IN PXENVIF_RECEIVER Receiver,
@@ -3852,6 +3875,7 @@ ReceiverSend(
__ReceiverRingSend(Ring, FALSE);
}
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverSetHashAlgorithm(
IN PXENVIF_RECEIVER Receiver,
@@ -3895,6 +3919,7 @@ fail1:
return status;
}
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverQueryHashCapabilities(
IN PXENVIF_RECEIVER Receiver,
@@ -3918,6 +3943,7 @@ fail1:
return status;
}
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverUpdateHashParameters(
IN PXENVIF_RECEIVER Receiver,
@@ -3969,6 +3995,7 @@ fail1:
return status;
}
+_IRQL_requires_(DISPATCH_LEVEL)
static FORCEINLINE NTSTATUS
__ReceiverSetQueueAffinities(
IN PXENVIF_RECEIVER Receiver,
@@ -4012,6 +4039,7 @@ fail1:
return status;
}
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverUpdateHashMapping(
IN PXENVIF_RECEIVER Receiver,
diff --git a/src/xenvif/receiver.h b/src/xenvif/receiver.h
index 0238bb2..d093dd0 100644
--- a/src/xenvif/receiver.h
+++ b/src/xenvif/receiver.h
@@ -41,96 +41,113 @@
typedef struct _XENVIF_RECEIVER XENVIF_RECEIVER, *PXENVIF_RECEIVER;
+_IRQL_requires_(PASSIVE_LEVEL)
extern NTSTATUS
ReceiverInitialize(
IN PXENVIF_FRONTEND Frontend,
OUT PXENVIF_RECEIVER *Receiver
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern NTSTATUS
ReceiverConnect(
IN PXENVIF_RECEIVER Receiver
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern NTSTATUS
ReceiverStoreWrite(
IN PXENVIF_RECEIVER Receiver,
IN PXENBUS_STORE_TRANSACTION Transaction
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern NTSTATUS
ReceiverEnable(
IN PXENVIF_RECEIVER Receiver
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern VOID
ReceiverDisable(
IN PXENVIF_RECEIVER Receiver
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern VOID
ReceiverDisconnect(
IN PXENVIF_RECEIVER Receiver
);
+_IRQL_requires_(PASSIVE_LEVEL)
extern VOID
ReceiverTeardown(
IN PXENVIF_RECEIVER Receiver
);
+_IRQL_requires_max_(APC_LEVEL)
extern VOID
ReceiverWaitForPackets(
IN PXENVIF_RECEIVER Receiver
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern VOID
ReceiverQueryRingSize(
IN PXENVIF_RECEIVER Receiver,
OUT PULONG Size
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern VOID
ReceiverSetOffloadOptions(
IN PXENVIF_RECEIVER Receiver,
IN XENVIF_VIF_OFFLOAD_OPTIONS Options
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern VOID
ReceiverSetBackfillSize(
IN PXENVIF_RECEIVER Receiver,
IN ULONG Size
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern VOID
ReceiverReturnPacket(
IN PXENVIF_RECEIVER Receiver,
IN PVOID Cookie
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern VOID
ReceiverTrigger(
IN PXENVIF_RECEIVER Receiver,
IN ULONG Index
);
+_IRQL_requires_(DISPATCH_LEVEL)
extern VOID
ReceiverSend(
IN PXENVIF_RECEIVER Receiver,
IN ULONG Index
);
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverSetHashAlgorithm(
IN PXENVIF_RECEIVER Receiver,
IN XENVIF_PACKET_HASH_ALGORITHM Algorithm
);
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverQueryHashCapabilities(
IN PXENVIF_RECEIVER Receiver,
OUT PULONG Types
);
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverUpdateHashParameters(
IN PXENVIF_RECEIVER Receiver,
@@ -138,6 +155,7 @@ ReceiverUpdateHashParameters(
IN PUCHAR Key
);
+_IRQL_requires_(DISPATCH_LEVEL)
NTSTATUS
ReceiverUpdateHashMapping(
IN PXENVIF_RECEIVER Receiver,
--
2.51.0.windows.1
--
Ngoc Tu Dinh | Vates XCP-ng Developer
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |