On Tue, Jan 04, 2011 at 10:57:20AM +0530, Arun R Bharadwaj wrote: > +static void aio_thread(ThreadletWork *work) > +{
aio_thread() is not a descriptive name here. This isn't the top-level thread function, just the work->func. Please choose something like handle_aiocb() or handle_work(). > + pid_t pid; > + ssize_t ret = 0; > + struct qemu_paiocb *aiocb; > + > + pid = getpid(); > + aiocb = container_of(work, struct qemu_paiocb, work); > + aiocb->active = 1; aiocb_mutex? > > - if (kill(pid, aiocb->ev_signo)) die("kill failed"); > + switch (aiocb->aio_type & QEMU_AIO_TYPE_MASK) { > + case QEMU_AIO_READ: > + case QEMU_AIO_WRITE: > + ret = handle_aiocb_rw(aiocb); > + break; > + case QEMU_AIO_FLUSH: > + ret = handle_aiocb_flush(aiocb); > + break; > + case QEMU_AIO_IOCTL: > + ret = handle_aiocb_ioctl(aiocb); > + break; > + default: > + fprintf(stderr, "invalid aio request (0x%x)\n", aiocb->aio_type); > + ret = -EINVAL; > + break; > } > > - idle_threads--; > - cur_threads--; > - mutex_unlock(&lock); > + qemu_mutex_lock(&aiocb_mutex); > + aiocb->ret = ret; > + qemu_cond_broadcast(&aiocb_completion); > + qemu_mutex_unlock(&aiocb_mutex); > > - return NULL; > + if (kill(pid, aiocb->ev_signo)) { > + die("kill failed"); > + } > + return; return not needed in void function, please remove. Stefan