Revision 5be4aab7 posix-aio-compat.c
b/posix-aio-compat.c | ||
---|---|---|
322 | 322 |
|
323 | 323 |
while (QTAILQ_EMPTY(&request_list) && |
324 | 324 |
!(ret == ETIMEDOUT)) { |
325 |
idle_threads++; |
|
325 | 326 |
ret = cond_timedwait(&cond, &lock, &ts); |
327 |
idle_threads--; |
|
326 | 328 |
} |
327 | 329 |
|
328 | 330 |
if (QTAILQ_EMPTY(&request_list)) |
... | ... | |
331 | 333 |
aiocb = QTAILQ_FIRST(&request_list); |
332 | 334 |
QTAILQ_REMOVE(&request_list, aiocb, node); |
333 | 335 |
aiocb->active = 1; |
334 |
idle_threads--; |
|
335 | 336 |
mutex_unlock(&lock); |
336 | 337 |
|
337 | 338 |
switch (aiocb->aio_type & QEMU_AIO_TYPE_MASK) { |
... | ... | |
353 | 354 |
|
354 | 355 |
mutex_lock(&lock); |
355 | 356 |
aiocb->ret = ret; |
356 |
idle_threads++; |
|
357 | 357 |
mutex_unlock(&lock); |
358 | 358 |
|
359 | 359 |
if (kill(pid, aiocb->ev_signo)) die("kill failed"); |
360 | 360 |
} |
361 | 361 |
|
362 |
idle_threads--; |
|
363 | 362 |
cur_threads--; |
364 | 363 |
mutex_unlock(&lock); |
365 | 364 |
|
... | ... | |
371 | 370 |
sigset_t set, oldset; |
372 | 371 |
|
373 | 372 |
cur_threads++; |
374 |
idle_threads++; |
|
375 | 373 |
|
376 | 374 |
/* block all signals */ |
377 | 375 |
if (sigfillset(&set)) die("sigfillset"); |
Also available in: Unified diff