|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH xenbus 02/11] Remove 'Sequence' from SYNC_CONTEXT
From: Paul Durrant <pdurrant@xxxxxxxxxx>
It is not actually needed because enable/disable interrupt operations will
always wait indefinitely.
Signed-off-by: Paul Durrant <pdurrant@xxxxxxxxxx>
---
src/xenbus/sync.c | 19 ++++++-------------
1 file changed, 6 insertions(+), 13 deletions(-)
diff --git a/src/xenbus/sync.c b/src/xenbus/sync.c
index 615eca84c460..c2ef681501d1 100644
--- a/src/xenbus/sync.c
+++ b/src/xenbus/sync.c
@@ -89,7 +89,6 @@ typedef struct _SYNC_CONTEXT {
PVOID Argument;
SYNC_CALLBACK Early;
SYNC_CALLBACK Late;
- ULONG Sequence;
LONG ProcessorCount;
LONG CompletionCount;
SYNC_PROCESSOR Processor[1];
@@ -160,8 +159,6 @@ SyncWorker(
InterlockedIncrement(&Context->CompletionCount);
for (;;) {
- ULONG Sequence;
-
if (Processor->Exit) {
if (Context->Late != NULL)
Context->Late(Context->Argument, Index);
@@ -176,8 +173,6 @@ SyncWorker(
continue;
}
- Sequence = Context->Sequence;
-
if (Processor->DisableInterrupts) {
ULONG Attempts;
NTSTATUS status;
@@ -188,8 +183,7 @@ SyncWorker(
InterlockedIncrement(&Context->CompletionCount);
Attempts = 0;
- while (Context->Sequence == Sequence &&
- Context->CompletionCount < Context->ProcessorCount) {
+ while (Context->CompletionCount < Context->ProcessorCount) {
_mm_pause();
KeMemoryBarrier();
@@ -233,8 +227,7 @@ SyncWorker(
InterlockedIncrement(&Context->CompletionCount);
- while (Context->Sequence == Sequence &&
- Context->CompletionCount < Context->ProcessorCount) {
+ while (Context->CompletionCount < Context->ProcessorCount) {
_mm_pause();
KeMemoryBarrier();
}
@@ -279,8 +272,8 @@ SyncCapture(
Context->Early = Early;
Context->Late = Late;
- Context->Sequence++;
Context->CompletionCount = 0;
+ KeMemoryBarrier();
Context->ProcessorCount =
KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
@@ -328,8 +321,8 @@ SyncDisableInterrupts(
ASSERT(SyncOwner >= 0);
- Context->Sequence++;
Context->CompletionCount = 0;
+ KeMemoryBarrier();
for (Index = 0; Index < Context->ProcessorCount; Index++) {
PSYNC_PROCESSOR Processor = &Context->Processor[Index];
@@ -402,8 +395,8 @@ SyncEnableInterrupts(
Irql = KeGetCurrentIrql();
ASSERT3U(Irql, ==, HIGH_LEVEL);
- Context->Sequence++;
Context->CompletionCount = 0;
+ KeMemoryBarrier();
for (Index = 0; Index < Context->ProcessorCount; Index++) {
PSYNC_PROCESSOR Processor = &Context->Processor[Index];
@@ -443,8 +436,8 @@ SyncRelease(
if (Context->Late != NULL)
Context->Late(Context->Argument, SyncOwner);
- Context->Sequence++;
Context->CompletionCount = 0;
+ KeMemoryBarrier();
for (Index = 0; Index < Context->ProcessorCount; Index++) {
PSYNC_PROCESSOR Processor = &Context->Processor[Index];
--
2.17.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |