VirtualBox

Ignore:
Timestamp:
Jul 12, 2008 12:19:35 AM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
33250
Message:

INTNET: Hopefully sorted out a bunch of unsafe locking (handle usage is still too trusting, but that can wait). Made the factory generic for all three trunk connections.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/testcase/tstIntNetR0.cpp

    r10524 r10557  
    487487                            /*
    488488                             * Start threaded testcase.
     489                             * Give it 5 mins to finish.
    489490                             */
    490491                            if (!g_cErrors)
     
    520521                                {
    521522                                    int rc2 = VINF_SUCCESS;
    522                                     rc = RTThreadWait(ThreadSend0, 30000, &rc2);
    523                                     if (    VBOX_SUCCESS(rc)
    524                                         &&  VBOX_SUCCESS(rc2))
    525                                         rc = RTThreadWait(ThreadSend1, 30000, &rc2);
     523                                    rc = RTThreadWait(ThreadSend0, 5*60*1000, &rc2);
     524#if 1 /** @todo it looks like I'm subject to some false wakeup calls here. (2.6.23-gentoo-r3 amd64) */
     525                                    for (int cTries = 100; rc == VERR_TIMEOUT && cTries > 0; cTries--)
     526                                    {
     527                                        RTThreadSleep(1);
     528                                        rc = RTThreadWait(ThreadSend0, 1, &rc2);
     529                                    }
     530#endif
     531                                    AssertRC(rc);
     532                                    if (VBOX_SUCCESS(rc))
     533                                    {
     534                                        ThreadSend0 = NIL_RTTHREAD;
     535                                        rc = RTThreadWait(ThreadSend1, 5*60*1000, RT_SUCCESS(rc2) ? &rc2 : NULL);
     536#if 1 /** @todo it looks like I'm subject to some false wakeup calls here. (2.6.23-gentoo-r3 amd64) */
     537                                        for (int cTries = 100; rc == VERR_TIMEOUT && cTries > 0; cTries--)
     538                                        {
     539                                            RTThreadSleep(1);
     540                                            rc = RTThreadWait(ThreadSend1, 1, &rc2);
     541                                        }
     542#endif
     543                                        AssertRC(rc);
     544                                        if (RT_SUCCESS(rc))
     545                                            ThreadSend1 = NIL_RTTHREAD;
     546                                    }
    526547                                    if (    VBOX_SUCCESS(rc)
    527548                                        &&  VBOX_SUCCESS(rc2))
     
    544565                                         * Closing time...
    545566                                         */
     567                                        rc = RTThreadWait(ThreadRecv0, 5000, &rc2);
     568                                        if (RT_SUCCESS(rc))
     569                                            ThreadRecv0 = NIL_RTTHREAD;
     570                                        if (VBOX_FAILURE(rc) || VBOX_FAILURE(rc2))
     571                                        {
     572                                            RTPrintf("tstIntNetR0: Failed waiting on receiver thread 0, rc=%Vrc, rc2=%Vrc\n", rc, rc2);
     573                                            g_cErrors++;
     574                                        }
     575
     576                                        rc = RTThreadWait(ThreadRecv1, 5000, &rc2);
     577                                        if (RT_SUCCESS(rc))
     578                                            ThreadRecv1 = NIL_RTTHREAD;
     579                                        if (VBOX_FAILURE(rc) || VBOX_FAILURE(rc2))
     580                                        {
     581                                            RTPrintf("tstIntNetR0: Failed waiting on receiver thread 1, rc=%Vrc, rc2=%Vrc\n", rc, rc2);
     582                                            g_cErrors++;
     583                                        }
     584
    546585                                        rc = INTNETR0IfClose(pIntNet, hIf0);
    547586                                        if (VBOX_SUCCESS(rc))
     
    555594                                            g_cErrors++;
    556595                                        }
     596
    557597                                        rc = INTNETR0IfClose(pIntNet, hIf1);
    558598                                        if (VBOX_SUCCESS(rc))
     
    567607                                        }
    568608
    569                                         rc = RTThreadWait(ThreadRecv0, 5000, &rc2);
    570                                         if (VBOX_FAILURE(rc) || VBOX_FAILURE(rc2))
    571                                         {
    572                                             RTPrintf("tstIntNetR0: Failed waiting on receiver thread 0, rc=%Vrc, rc2=%Vrc\n", rc, rc2);
    573                                             g_cErrors++;
    574                                         }
    575 
    576                                         rc = RTThreadWait(ThreadRecv1, 5000, &rc2);
    577                                         if (VBOX_FAILURE(rc) || VBOX_FAILURE(rc2))
    578                                         {
    579                                             RTPrintf("tstIntNetR0: Failed waiting on receiver thread 1, rc=%Vrc, rc2=%Vrc\n", rc, rc2);
    580                                             g_cErrors++;
    581                                         }
    582609
    583610                                        /* check if the network still exist... */
     
    593620                                        g_cErrors++;
    594621                                    }
     622
     623                                    /*
     624                                     * Give them a chance to complete...
     625                                     */
     626                                    RTThreadWait(ThreadRecv0, 5000, NULL);
     627                                    RTThreadWait(ThreadRecv1, 5000, NULL);
     628                                    RTThreadWait(ThreadSend0, 5000, NULL);
     629                                    RTThreadWait(ThreadSend1, 5000, NULL);
     630
    595631                                }
    596632                                else
     
    618654                    g_cErrors++;
    619655                }
     656
     657                if (hIf1 != INTNET_HANDLE_INVALID)
     658                    rc = INTNETR0IfClose(pIntNet, hIf1);
    620659            }
    621660            else
     
    624663                g_cErrors++;
    625664            }
     665
     666            if (hIf0 != INTNET_HANDLE_INVALID)
     667                rc = INTNETR0IfClose(pIntNet, hIf0);
    626668        }
    627669        else
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