VirtualBox

Changeset 23546 in vbox


Ignore:
Timestamp:
Oct 5, 2009 9:35:28 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
53190
Message:

Use KeIpiGenericCall on Windows 7 hosts.

Location:
trunk/src/VBox/Runtime/r0drv/nt
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/src/VBox/Runtime/r0drv/nt/initterm-r0drv-nt.cpp

    r23506 r23546  
    6363/** SendIpi handler based on Windows version */
    6464PFNRTSENDIPI                g_pfnrtSendIpi;
     65/** KeIpiGenericCall - Windows Server 2003+ only */
     66PFNRTKEIPIGENERICCALL       g_pfnrtKeIpiGenericCall;
    6567
    6668/** Offset of the _KPRCB::QuantumEnd field. 0 if not found. */
     
    9193    g_pfnrtNtHalRequestIpi = NULL;
    9294    g_pfnrtNtHalSendSoftwareInterrupt = NULL;
     95    g_pfnrtKeIpiGenericCall = NULL;
    9396#else
    9497    /*
     
    107110    RtlInitUnicodeString(&RoutineName, L"HalSendSoftwareInterrupt");
    108111    g_pfnrtNtHalSendSoftwareInterrupt = (PFNHALSENDSOFTWAREINTERRUPT)MmGetSystemRoutineAddress(&RoutineName);
     112
     113    RtlInitUnicodeString(&RoutineName, L"KeIpiGenericCall");
     114    g_pfnrtKeIpiGenericCall = (PFNRTKEIPIGENERICCALL)MmGetSystemRoutineAddress(&RoutineName);
    109115#endif
    110116
  • TabularUnified trunk/src/VBox/Runtime/r0drv/nt/internal-r0drv-nt.h

    r23506 r23546  
    4444typedef VOID (__stdcall *PFNHALSENDSOFTWAREINTERRUPT)(ULONG ProcessorNumber, KIRQL Irql);
    4545typedef int (__stdcall *PFNRTSENDIPI)(RTCPUID idCpu);
    46 
     46typedef ULONG_PTR (__stdcall *PFNRTKEIPIGENERICCALL)(PKIPI_BROADCAST_WORKER BroadcastFunction, ULONG_PTR  Context);
    4747
    4848/*******************************************************************************
     
    5555extern PFNHALSENDSOFTWAREINTERRUPT  g_pfnrtNtHalSendSoftwareInterrupt;
    5656extern PFNRTSENDIPI                 g_pfnrtSendIpi;
     57extern PFNRTKEIPIGENERICCALL        g_pfnrtKeIpiGenericCall;
    5758extern uint32_t                     g_offrtNtPbQuantumEnd;
    5859extern uint32_t                     g_cbrtNtPbQuantumEnd;
  • TabularUnified trunk/src/VBox/Runtime/r0drv/nt/mp-r0drv-nt.cpp

    r23506 r23546  
    355355}
    356356
     357ULONG_PTR rtMpIpiGenericCall(ULONG_PTR  Argument)
     358{
     359    return 0;
     360}
     361
    357362int rtMpSendIpiWin7(RTCPUID idCpu)
    358363{
    359     g_pfnrtNtHalSendSoftwareInterrupt(idCpu, DISPATCH_LEVEL);
     364    g_pfnrtKeIpiGenericCall(rtMpIpiGenericCall, 0);
     365////    g_pfnrtNtHalSendSoftwareInterrupt(idCpu, DISPATCH_LEVEL);
    360366    return VINF_SUCCESS;
    361367}
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette