Changeset 19936 in vbox for trunk/src/VBox
- Timestamp:
- May 23, 2009 1:58:13 AM (16 years ago)
- Location:
- trunk/src/VBox/Runtime/testcase
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/testcase/tstR0ThreadPreemption.cpp
r19935 r19936 82 82 if (RTThreadPreemptIsEnabled(NIL_RTTHREAD)) 83 83 RTStrPrintf(pszErr, cchErr, "!RTThreadPreemptIsEnabled returns true after RTThreadPreemptDisable"); 84 else if (!(ASMGetFlags() & X86_EFL_IF)) 85 RTStrPrintf(pszErr, cchErr, "!Interrupts disabled"); 84 86 RTThreadPreemptRestore(&State); 85 87 break; … … 88 90 case TSTR0THREADPREMEPTION_IS_PENDING: 89 91 { 90 /* This isn't 100% proof... */91 92 RTTHREADPREEMPTSTATE State = RTTHREADPREEMPTSTATE_INITIALIZER; 92 93 RTThreadPreemptDisable(&State); … … 106 107 } while ( !fPending 107 108 && cNanosElapsed < UINT64_C(60)*1000U*1000U*1000U); 108 if (fPending) 109 if (!fPending) 110 RTStrPrintf(pszErr, cchErr, "!Preempt not pending after %llu loops / %llu ns\n", 111 cLoops, cNanosElapsed); 112 else if (cLoops == 1) 113 RTStrPrintf(pszErr, cchErr, "!cLoops=0\n"); 114 else 109 115 RTStrPrintf(pszErr, cchErr, "RTThreadPreemptIsPending returned true after %llu loops / %llu ns\n", 110 cLoops, cNanosElapsed);111 else112 RTStrPrintf(pszErr, cchErr, "!Preempt not pending after %llu loops / %llu ns\n",113 116 cLoops, cNanosElapsed); 114 117 } -
trunk/src/VBox/Runtime/testcase/tstR0ThreadPreemptionDriver.cpp
r19935 r19936 40 40 #include <iprt/string.h> 41 41 #include <iprt/test.h> 42 #include <iprt/thread.h> 42 43 #ifdef VBOX 43 44 # include <VBox/sup.h> … … 153 154 */ 154 155 RTTestSub(hTest, "Pending Preemption"); 155 Req.Hdr.u32Magic = SUPR0SERVICEREQHDR_MAGIC; 156 Req.Hdr.cbReq = sizeof(Req); 157 Req.szMsg[0] = '\0'; 158 RTTESTI_CHECK_RC(rc = SUPR3CallR0Service("tstR0ThreadPreemption", sizeof("tstR0ThreadPreemption") - 1, 159 TSTR0THREADPREMEPTION_IS_PENDING, 0, &Req.Hdr), VINF_SUCCESS); 160 RTTESTI_CHECK_MSG(Req.szMsg[0] != '!', ("%s", Req.szMsg)); 161 if (Req.szMsg[0]) 162 RTTestIPrintf(RTTESTLVL_ALWAYS, "%s", Req.szMsg); 156 for (int i = 0; ; i++) 157 { 158 Req.Hdr.u32Magic = SUPR0SERVICEREQHDR_MAGIC; 159 Req.Hdr.cbReq = sizeof(Req); 160 Req.szMsg[0] = '\0'; 161 RTTESTI_CHECK_RC(rc = SUPR3CallR0Service("tstR0ThreadPreemption", sizeof("tstR0ThreadPreemption") - 1, 162 TSTR0THREADPREMEPTION_IS_PENDING, 0, &Req.Hdr), VINF_SUCCESS); 163 if ( strcmp(Req.szMsg, "cLoops=0\n") 164 || i >= 64) 165 { 166 RTTESTI_CHECK_MSG(Req.szMsg[0] != '!', ("%s", Req.szMsg)); 167 if (Req.szMsg[0]) 168 RTTestIPrintf(RTTESTLVL_ALWAYS, "%s", Req.szMsg); 169 break; 170 } 171 if ((i % 3) == 0) 172 RTThreadYield(); 173 } 163 174 164 175 /*
Note:
See TracChangeset
for help on using the changeset viewer.