mirror of https://gitee.com/openkylin/qemu.git
Disable semaphores fallback code for OpenBSD
Disable the semaphores fallback code for OpenBSD as modern OpenBSD releases now have sem_timedwait(). Signed-off-by: Brad Smith <brad@comstyle.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
62054c06d4
commit
927fa909d5
|
@ -12,7 +12,7 @@ struct QemuCond {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct QemuSemaphore {
|
struct QemuSemaphore {
|
||||||
#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
|
#if defined(__APPLE__) || defined(__NetBSD__)
|
||||||
pthread_mutex_t lock;
|
pthread_mutex_t lock;
|
||||||
pthread_cond_t cond;
|
pthread_cond_t cond;
|
||||||
int count;
|
int count;
|
||||||
|
|
|
@ -122,7 +122,7 @@ void qemu_sem_init(QemuSemaphore *sem, int init)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
|
#if defined(__APPLE__) || defined(__NetBSD__)
|
||||||
rc = pthread_mutex_init(&sem->lock, NULL);
|
rc = pthread_mutex_init(&sem->lock, NULL);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
error_exit(rc, __func__);
|
error_exit(rc, __func__);
|
||||||
|
@ -147,7 +147,7 @@ void qemu_sem_destroy(QemuSemaphore *sem)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
|
#if defined(__APPLE__) || defined(__NetBSD__)
|
||||||
rc = pthread_cond_destroy(&sem->cond);
|
rc = pthread_cond_destroy(&sem->cond);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
error_exit(rc, __func__);
|
error_exit(rc, __func__);
|
||||||
|
@ -168,7 +168,7 @@ void qemu_sem_post(QemuSemaphore *sem)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
|
#if defined(__APPLE__) || defined(__NetBSD__)
|
||||||
pthread_mutex_lock(&sem->lock);
|
pthread_mutex_lock(&sem->lock);
|
||||||
if (sem->count == INT_MAX) {
|
if (sem->count == INT_MAX) {
|
||||||
rc = EINVAL;
|
rc = EINVAL;
|
||||||
|
@ -206,7 +206,7 @@ int qemu_sem_timedwait(QemuSemaphore *sem, int ms)
|
||||||
int rc;
|
int rc;
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
|
|
||||||
#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
|
#if defined(__APPLE__) || defined(__NetBSD__)
|
||||||
compute_abs_deadline(&ts, ms);
|
compute_abs_deadline(&ts, ms);
|
||||||
pthread_mutex_lock(&sem->lock);
|
pthread_mutex_lock(&sem->lock);
|
||||||
--sem->count;
|
--sem->count;
|
||||||
|
@ -248,7 +248,7 @@ int qemu_sem_timedwait(QemuSemaphore *sem, int ms)
|
||||||
|
|
||||||
void qemu_sem_wait(QemuSemaphore *sem)
|
void qemu_sem_wait(QemuSemaphore *sem)
|
||||||
{
|
{
|
||||||
#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
|
#if defined(__APPLE__) || defined(__NetBSD__)
|
||||||
pthread_mutex_lock(&sem->lock);
|
pthread_mutex_lock(&sem->lock);
|
||||||
--sem->count;
|
--sem->count;
|
||||||
while (sem->count < 0) {
|
while (sem->count < 0) {
|
||||||
|
|
Loading…
Reference in New Issue