On Fri, Jan 18, 2013 at 4:16 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Il 18/01/2013 17:07, Andreas Färber ha scritto: >> Am 18.01.2013 17:05, schrieb Paolo Bonzini: >>> Il 18/01/2013 16:58, Andreas Färber ha scritto: >>>> Avoid an undefined reference to sem_timedwait. >>>> >>>> Signed-off-by: Andreas Färber <andreas.faer...@web.de> >>>> --- >>>> include/qemu/thread-posix.h | 2 +- >>>> util/qemu-thread-posix.c | 10 +++++----- >>>> 2 Dateien geändert, 6 Zeilen hinzugefügt(+), 6 Zeilen entfernt(-) >>>> >>>> diff --git a/include/qemu/thread-posix.h b/include/qemu/thread-posix.h >>>> index 0f30dcc..772d925 100644 >>>> --- a/include/qemu/thread-posix.h >>>> +++ b/include/qemu/thread-posix.h >>>> @@ -12,7 +12,7 @@ struct QemuCond { >>>> }; >>>> >>>> struct QemuSemaphore { >>>> -#if defined(__APPLE__) || defined(__NetBSD__) >>>> +#if defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) >>>> pthread_mutex_t lock; >>>> pthread_cond_t cond; >>>> int count; >>>> diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c >>>> index 4489abf..fa8a3d8 100644 >>>> --- a/util/qemu-thread-posix.c >>>> +++ b/util/qemu-thread-posix.c >>>> @@ -122,7 +122,7 @@ void qemu_sem_init(QemuSemaphore *sem, int init) >>>> { >>>> int rc; >>>> >>>> -#if defined(__APPLE__) || defined(__NetBSD__) >>>> +#if defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) >>>> rc = pthread_mutex_init(&sem->lock, NULL); >>>> if (rc != 0) { >>>> error_exit(rc, __func__); >>>> @@ -147,7 +147,7 @@ void qemu_sem_destroy(QemuSemaphore *sem) >>>> { >>>> int rc; >>>> >>>> -#if defined(__APPLE__) || defined(__NetBSD__) >>>> +#if defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) >>>> rc = pthread_cond_destroy(&sem->cond); >>>> if (rc < 0) { >>>> error_exit(rc, __func__); >>>> @@ -168,7 +168,7 @@ void qemu_sem_post(QemuSemaphore *sem) >>>> { >>>> int rc; >>>> >>>> -#if defined(__APPLE__) || defined(__NetBSD__) >>>> +#if defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) >>>> pthread_mutex_lock(&sem->lock); >>>> if (sem->count == INT_MAX) { >>>> rc = EINVAL; >>>> @@ -206,7 +206,7 @@ int qemu_sem_timedwait(QemuSemaphore *sem, int ms) >>>> int rc; >>>> struct timespec ts; >>>> >>>> -#if defined(__APPLE__) || defined(__NetBSD__) >>>> +#if defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) >>>> compute_abs_deadline(&ts, ms); >>>> pthread_mutex_lock(&sem->lock); >>>> --sem->count; >>>> @@ -249,7 +249,7 @@ int qemu_sem_timedwait(QemuSemaphore *sem, int ms) >>>> >>>> void qemu_sem_wait(QemuSemaphore *sem) >>>> { >>>> -#if defined(__APPLE__) || defined(__NetBSD__) >>>> +#if defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) >>>> pthread_mutex_lock(&sem->lock); >>>> --sem->count; >>>> while (sem->count < 0) { >>>> >>> >>> This was reverted recently. Apparently your OpenBSD is too old compared >>> to what Brad wants to support... >> >> This is 5.1 from 2012. > > 2012 does sound a bit too recent, but then maybe not considering OpenBSD > is only now getting a decent threading library. I suggest this > approach: http://lwn.net/Articles/527216/
Brad, please correct me if I'm wrong, but I don't think OpenBSD supports the previous releases, only the last release (5.2 was released in November, 2012), -stable and -current: http://www.openbsd.org/stable.html http://www.openbsd.org/errata52.html This is a different approach to for example Ubuntu LTS, Debian stable or RHEL. > > Paolo > > Paolo > >