VirtualBox

Ignore:
Timestamp:
Jun 29, 2010 9:02:24 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
63180
Message:

Support/testcase/tstSupSem: Process spawn testing for multi release semaphore.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/testcase/tstSupSem.cpp

    r30471 r30489  
    203203     * and make sure that this does not alter the intended behaviour of our event semaphore implementation (see #5090).
    204204     */
    205     RTTestSub(hTest, "Process spawn");
     205    RTTestSub(hTest, "SRE Process Spawn");
    206206    hThread = NIL_RTTHREAD;
    207207    g_cMillies = 120*1000;
     
    210210
    211211    const char *apszArgs[3] = { argv[0], "child", NULL };
    212     RTPROCESS Process;
     212    RTPROCESS Process = NIL_RTPROCESS;
    213213    RTThreadSleep(250);
    214214    RTTESTI_CHECK_RC(RTProcCreate(apszArgs[0], apszArgs, RTENV_DEFAULT, 0, &Process), VINF_SUCCESS);
     
    217217    RTTESTI_CHECK_RC(SUPSemEventSignal(pSession, hEvent), VINF_SUCCESS);
    218218
    219     rcThread = VINF_SUCCESS;
     219    rcThread = VERR_GENERAL_FAILURE;
    220220    RTTESTI_CHECK_RC(RTThreadWait(hThread, 120*1000, &rcThread), VINF_SUCCESS);
    221221    RTTESTI_CHECK_RC(rcThread, VINF_SUCCESS);
    222222    RTTESTI_CHECK_RC(SUPSemEventClose(pSession, hEvent), VINF_OBJECT_DESTROYED);
    223223
     224
     225    RTTestSub(hTest, "MRE Process Spawn");
     226    hThread = NIL_RTTHREAD;
     227    g_cMillies = 120*1000;
     228    RTTESTI_CHECK_RC(SUPSemEventMultiCreate(pSession, &hEvent), VINF_SUCCESS);
     229    RTTESTI_CHECK_RC(RTThreadCreate(&hThread, tstSupSemInterruptibleMRE, (void *)hEvent, 0, RTTHREADTYPE_TIMER, RTTHREADFLAGS_WAITABLE, "IntSRE"), VINF_SUCCESS);
     230   
     231    RTTHREAD hThread2 = NIL_RTTHREAD;
     232    RTTESTI_CHECK_RC(RTThreadCreate(&hThread2, tstSupSemInterruptibleMRE, (void *)hEvent, 0, RTTHREADTYPE_TIMER, RTTHREADFLAGS_WAITABLE, "IntSRE"), VINF_SUCCESS);
     233
     234    Process = NIL_RTPROCESS;
     235    RTThreadSleep(250);
     236    RTTESTI_CHECK_RC(RTProcCreate(apszArgs[0], apszArgs, RTENV_DEFAULT, 0, &Process), VINF_SUCCESS);
     237
     238    RTThreadSleep(250);
     239    RTTESTI_CHECK_RC(SUPSemEventMultiSignal(pSession, hEvent), VINF_SUCCESS);
     240
     241    rcThread = VERR_GENERAL_FAILURE;
     242    RTTESTI_CHECK_RC(RTThreadWait(hThread, 120*1000, &rcThread), VINF_SUCCESS);
     243    RTTESTI_CHECK_RC(rcThread, VINF_SUCCESS);
     244
     245    int rcThread2 = VERR_GENERAL_FAILURE;
     246    RTTESTI_CHECK_RC(RTThreadWait(hThread2, 120*1000, &rcThread2), VINF_SUCCESS);
     247    RTTESTI_CHECK_RC(rcThread2, VINF_SUCCESS);
     248
     249    RTTESTI_CHECK_RC(SUPSemEventMultiClose(pSession, hEvent), VINF_OBJECT_DESTROYED);
     250
    224251#endif /* !OS2 && !WINDOWS */
    225252
Note: See TracChangeset for help on using the changeset viewer.

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