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