[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH xenbus 1/4] Use a Cpu index in XENBUS_EVTCHN_CHANNEL rather than a PROCESSOR_NUMBER
From: Paul Durrant <pdurrant@xxxxxxxxxx> It makes the code a bit simpler removing the need for some double Group/Number comparisons. Signed-off-by: Paul Durrant <pdurrant@xxxxxxxxxx> --- src/xenbus/evtchn.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c index f2cd61b175b9..aeaf95c70258 100644 --- a/src/xenbus/evtchn.c +++ b/src/xenbus/evtchn.c @@ -86,7 +86,7 @@ struct _XENBUS_EVTCHN_CHANNEL { XENBUS_EVTCHN_PARAMETERS Parameters; BOOLEAN Mask; ULONG LocalPort; - PROCESSOR_NUMBER ProcNumber; + ULONG Cpu; BOOLEAN Closed; }; @@ -467,7 +467,7 @@ EvtchnReap( RemoveEntryList(&Channel->ListEntry); RtlZeroMemory(&Channel->ListEntry, sizeof (LIST_ENTRY)); - RtlZeroMemory(&Channel->ProcNumber, sizeof (PROCESSOR_NUMBER)); + Channel->Cpu = 0; ASSERT(IsListEmpty(&Channel->PendingListEntry)); RtlZeroMemory(&Channel->PendingListEntry, sizeof (LIST_ENTRY)); @@ -684,7 +684,6 @@ EvtchnTrigger( { PXENBUS_EVTCHN_CONTEXT Context = Interface->Context; KIRQL Irql; - PROCESSOR_NUMBER ProcNumber; ULONG Cpu; PXENBUS_EVTCHN_PROCESSOR Processor; PXENBUS_INTERRUPT Interrupt; @@ -693,11 +692,9 @@ EvtchnTrigger( ASSERT3U(Channel->Magic, ==, XENBUS_EVTCHN_CHANNEL_MAGIC); KeAcquireSpinLock(&Channel->Lock, &Irql); - ProcNumber = Channel->ProcNumber; + Cpu = Channel->Cpu; KeReleaseSpinLock(&Channel->Lock, Irql); - Cpu = KeGetProcessorIndexFromNumber(&ProcNumber); - ASSERT3U(Cpu, <, Context->ProcessorCount); Processor = &Context->Processor[Cpu]; @@ -758,8 +755,7 @@ EvtchnBind( if (!Channel->Active) goto done; - if (Channel->ProcNumber.Group == Group && - Channel->ProcNumber.Number == Number) + if (Channel->Cpu == Cpu) goto done; LocalPort = Channel->LocalPort; @@ -771,7 +767,7 @@ EvtchnBind( if (!NT_SUCCESS(status)) goto fail2; - Channel->ProcNumber = ProcNumber; + Channel->Cpu = Cpu; Info("[%u]: CPU %u:%u\n", LocalPort, Group, Number); @@ -803,7 +799,7 @@ EvtchnUnmask( KIRQL Irql = PASSIVE_LEVEL; BOOLEAN Pending; ULONG LocalPort; - PROCESSOR_NUMBER ProcNumber; + ULONG Cpu; ASSERT3U(Channel->Magic, ==, XENBUS_EVTCHN_CHANNEL_MAGIC); @@ -845,10 +841,9 @@ EvtchnUnmask( // event channel is bound, then we need to use the hypercall. // to schedule the upcall on the correct CPU. // - (VOID) KeGetCurrentProcessorNumberEx(&ProcNumber); + Cpu = KeGetCurrentProcessorNumberEx(NULL); - if (Channel->ProcNumber.Group != ProcNumber.Group || - Channel->ProcNumber.Number != ProcNumber.Number) { + if (Channel->Cpu != Cpu) { XENBUS_EVTCHN_ABI(PortMask, &Context->EvtchnAbi, LocalPort); -- 2.17.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |