[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 18/25] qemu-thread: add QemuSemaphore
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH 18/25] qemu-thread: add QemuSemaphore |
Date: |
Tue, 30 Oct 2012 19:48:58 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Fri, Oct 26, 2012 at 04:05:48PM +0200, Paolo Bonzini wrote:
> +int qemu_sem_timedwait(QemuSemaphore *sem, int ms)
> +{
> + int rc;
> +
> + if (ms <= 0) {
> + /* This is cheaper than sem_timedwait. */
> + rc = sem_trywait(&sem->sem);
> + if (rc == -1 && errno == EAGAIN) {
> + return -1;
> + }
> + } else {
> + struct timeval tv;
> + struct timespec ts;
> + gettimeofday(&tv, NULL);
> + ts.tv_nsec = tv.tv_usec * 1000 + (ms % 1000) * 1000000;
> + ts.tv_sec = tv.tv_sec + ms / 1000;
> + if (ts.tv_nsec >= 1000000000) {
> + ts.tv_sec++;
> + ts.tv_nsec -= 1000000000;
> + }
> + rc = sem_timedwait(&sem->sem, &ts);
> + if (rc == -1 && errno == ETIMEDOUT) {
> + return -1;
> + }
> + }
> + if (rc < 0) {
> + error_exit(errno, __func__);
> + }
Forgot to handle EINTR?
> + return 0;
> +}
> +
> +void qemu_sem_wait(QemuSemaphore *sem)
> +{
> + int rc;
> +
> + rc = sem_wait(&sem->sem);
> + if (rc < 0) {
> + error_exit(errno, __func__);
> + }
EINTR
- [Qemu-devel] [PATCH 07/25] aio: test node->deleted before calling io_flush, (continued)
- [Qemu-devel] [PATCH 07/25] aio: test node->deleted before calling io_flush, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 11/25] aio: make AioContexts GSources, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 08/25] aio: add non-blocking variant of aio_wait, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 06/25] aio: add I/O handlers to the AioContext interface, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 02/25] event_notifier: enable it to use pipes, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 09/25] aio: prepare for introducing GSource-based dispatch, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 12/25] aio: add aio_notify, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 15/25] main-loop: use aio_notify for qemu_notify_event, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 17/25] linux-aio: use event notifiers, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 18/25] qemu-thread: add QemuSemaphore, Paolo Bonzini, 2012/10/26
- Re: [Qemu-devel] [PATCH 18/25] qemu-thread: add QemuSemaphore,
Stefan Hajnoczi <=
- [Qemu-devel] [PATCH 10/25] aio: add Win32 implementation, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 13/25] aio: call aio_notify after setting I/O handlers, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 16/25] aio: clean up now-unused functions, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 14/25] main-loop: use GSource to poll AIO file descriptors, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 19/25] aio: add generic thread-pool facility, Paolo Bonzini, 2012/10/26
- [Qemu-devel] [PATCH 22/25] raw-posix: rename raw-posix-aio.h, hide unavailable prototypes, Paolo Bonzini, 2012/10/26