vbox的更動 33736 路徑 trunk/src/VBox/Runtime/r0drv
- 時間撮記:
- 2010-11-3 下午04:30:23 (14 年 以前)
- 檔案:
-
- 修改 1 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/Runtime/r0drv/solaris/semeventwait-r0drv-solaris.h
r33168 r33736 70 70 /** The thread to wake up. */ 71 71 kthread_t *pThread; 72 #if 0 /* @bugref{5342} */ 72 73 /** Cylic timer ID (used by the timeout callback). */ 73 74 cyclic_id_t idCy; 75 #endif 74 76 /** The mutex associated with the condition variable wait. */ 75 77 void volatile *pvMtx; … … 133 135 { 134 136 pWait->fIndefinite = false; 135 if ( (fFlags & (RTSEMWAIT_FLAGS_NANOSECS | RTSEMWAIT_FLAGS_ABSOLUTE)) 136 || pWait->cNsRelTimeout < UINT32_C(1000000000) / 100 /*Hz*/ * 4) 137 if ( ( (fFlags & (RTSEMWAIT_FLAGS_NANOSECS | RTSEMWAIT_FLAGS_ABSOLUTE)) 138 || pWait->cNsRelTimeout < UINT32_C(1000000000) / 100 /*Hz*/ * 4) 139 && g_pfnrtR0Sol_timeout_generic != NULL /* See @bugref{5342} */) 137 140 pWait->fHighRes = true; 138 141 else … … 163 166 pWait->pThread = curthread; 164 167 pWait->pvMtx = NULL; 168 #if 0 /* @bugref{5342} */ 165 169 pWait->idCy = CYCLIC_NONE; 170 #endif 166 171 167 172 return VINF_SUCCESS; … … 169 174 170 175 176 #if 0 /* @bugref{5342} */ 171 177 /** 172 178 * Cyclic timeout callback that sets the timeout indicator and wakes up the … … 185 191 before we wake it up. 186 192 Note: Trying to take the cpu_lock here doesn't work. */ 193 /** @todo LOCK ORDER INVERSION (pMtx & cpu_lock when arming the timer, here it's inverted). 194 * Possible fix: Use the thread lock for sleep/wakeup race prevention 195 * instead of the mutex associated with the cv/event. */ 187 196 mutex_enter(pMtx); 188 197 if (mutex_owner(&cpu_lock) == curthread) … … 196 205 } 197 206 } 207 #endif 198 208 199 209 … … 247 257 if (pWait->fHighRes) 248 258 { 259 #if 0 /* @bugref{5342} */ 249 260 if (g_pfnrtR0Sol_timeout_generic != NULL) 261 #endif 250 262 { 251 263 /* … … 257 269 CALLOUT_FLAG_ABSOLUTE); 258 270 } 271 #if 0 /* @bugref{5342} */ 259 272 else 260 273 { … … 276 289 mutex_exit(&cpu_lock); 277 290 } 291 #endif 278 292 } 279 293 else … … 318 332 if (pWait->fHighRes) 319 333 { 334 #if 0 /* @bugref{5342} */ 320 335 if (g_pfnrtR0Sol_timeout_generic != NULL) 336 #endif 321 337 g_pfnrtR0Sol_untimeout_generic(u.idCo, 0 /*nowait*/); 338 #if 0 /* @bugref{5342} */ 322 339 else 323 340 { … … 330 347 mutex_exit(&cpu_lock); 331 348 } 349 #endif 332 350 } 333 351 else
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器