VirtualBox

vbox的更動 54723 路徑 trunk/src/VBox/NetworkServices


忽略:
時間撮記:
2015-3-11 下午06:26:48 (10 年 以前)
作者:
vboxsync
訊息:

NetworkServices: before shutting down the client, do perform VMMR0_DO_INTNET_IF_ABORT_WAIT

位置:
trunk/src/VBox/NetworkServices/NetLib
檔案:
修改 2 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/NetworkServices/NetLib/VBoxNetBaseService.cpp

    r54722 r54723  
    463463    if (m->m_hThrRecv != NIL_RTTHREAD)
    464464    {
    465         int rc = m->m_EventQ->interruptEventQueueProcessing();
     465        int rc = abortWait();
     466        AssertRC(rc);
     467        rc = m->m_EventQ->interruptEventQueueProcessing();
    466468        if (RT_SUCCESS(rc))
    467469        {
     
    494496int VBoxNetBaseService::waitForIntNetEvent(int cMillis)
    495497{
    496     int rc = VINF_SUCCESS;
    497498    INTNETIFWAITREQ WaitReq;
    498499    LogFlowFunc(("ENTER:cMillis: %d\n", cMillis));
     
    503504    WaitReq.cMillies = cMillis;
    504505
    505     rc = SUPR3CallVMMR0Ex(NIL_RTR0PTR, NIL_VMCPUID, VMMR0_DO_INTNET_IF_WAIT, 0, &WaitReq.Hdr);
     506    int rc = SUPR3CallVMMR0Ex(NIL_RTR0PTR, NIL_VMCPUID, VMMR0_DO_INTNET_IF_WAIT, 0, &WaitReq.Hdr);
    506507    LogFlowFuncLeaveRC(rc);
    507508    return rc;
    508509}
     510
     511
     512int VBoxNetBaseService::abortWait()
     513{
     514    INTNETIFABORTWAITREQ AbortReq;
     515    LogFlowFunc(("ENTER:\n"));
     516    AbortReq.Hdr.u32Magic = SUPVMMR0REQHDR_MAGIC;
     517    AbortReq.Hdr.cbReq = sizeof(AbortReq);
     518    AbortReq.pSession = m->m_pSession;
     519    AbortReq.hIf = m->m_hIf;
     520    AbortReq.fNoMoreWaits = true;
     521
     522    int rc = SUPR3CallVMMR0Ex(NIL_RTR0PTR, NIL_VMCPUID, VMMR0_DO_INTNET_IF_ABORT_WAIT, 0, &AbortReq.Hdr);
     523    LogFlowFuncLeaveRC(rc);
     524    return rc;
     525}
     526
    509527
    510528/* S/G API */
     
    538556void VBoxNetBaseService::flushWire()
    539557{
    540     int rc = VINF_SUCCESS;
    541558    INTNETIFSENDREQ SendReq;
    542559    SendReq.Hdr.u32Magic = SUPVMMR0REQHDR_MAGIC;
     
    544561    SendReq.pSession     = m->m_pSession;
    545562    SendReq.hIf          = m->m_hIf;
    546     rc = SUPR3CallVMMR0Ex(NIL_RTR0PTR, NIL_VMCPUID, VMMR0_DO_INTNET_IF_SEND, 0, &SendReq.Hdr);
     563    int rc = SUPR3CallVMMR0Ex(NIL_RTR0PTR, NIL_VMCPUID, VMMR0_DO_INTNET_IF_SEND, 0, &SendReq.Hdr);
    547564    AssertRCReturnVoid(rc);
    548565    LogFlowFuncLeave();
  • trunk/src/VBox/NetworkServices/NetLib/VBoxNetBaseService.h

    r54700 r54723  
    6969    int                 syncLeave();
    7070    int                 waitForIntNetEvent(int cMillis);
     71    int                 abortWait();
    7172    int                 sendBufferOnWire(PCINTNETSEG pSg, int cSg, size_t cbBuffer);
    7273    void                flushWire();
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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