X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fsem.c;h=ee03e0b1d0872392d3770851e5bcdd372d49750e;hb=b44ad0d8c76b0d8b7c0da824ca334c23da97453c;hp=86fe39882c54a315e04a2f0b773f0b08db4aa801;hpb=b5aeb6f8ea2147f64be9a8ce750917aed4bf7cef;p=tlsproxy%2Ftlsproxy.git
diff --git a/src/sem.c b/src/sem.c
index 86fe398..ee03e0b 100644
--- a/src/sem.c
+++ b/src/sem.c
@@ -1,7 +1,7 @@
/*
* Simple semaphore implementation, P() and V().
*
- * Copyright (C) 2011 Simon Ruderich
+ * Copyright (C) 2011-2013 Simon Ruderich
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,11 +17,11 @@
* along with this program. If not, see .
*/
-#include
-#include
-
#include "sem.h"
+#include
+#include
+
struct SEM {
pthread_mutex_t mutex;
@@ -30,16 +30,16 @@ struct SEM {
};
SEM *sem_init(int init_value) {
- SEM *sem = (SEM *)malloc(sizeof(SEM));
- if (NULL == sem) {
+ SEM *sem = malloc(sizeof(*sem));
+ if (sem == NULL) {
return NULL;
}
- if (0 != pthread_mutex_init(&sem->mutex, NULL)) {
+ if (pthread_mutex_init(&sem->mutex, NULL) != 0) {
free(sem);
return NULL;
}
- if (0 != pthread_cond_init(&sem->condition, NULL)) {
+ if (pthread_cond_init(&sem->condition, NULL) != 0) {
pthread_mutex_destroy(&sem->mutex);
free(sem);
return NULL;
@@ -50,15 +50,15 @@ SEM *sem_init(int init_value) {
}
int sem_del(SEM *sem) {
- if (NULL == sem) {
+ if (sem == NULL) {
return 0;
}
- if (0 != pthread_mutex_destroy(&sem->mutex)) {
+ if (pthread_mutex_destroy(&sem->mutex) != 0) {
free(sem);
return -1;
}
- if (0 != pthread_cond_destroy(&sem->condition)) {
+ if (pthread_cond_destroy(&sem->condition) != 0) {
free(sem);
return -1;
}
@@ -69,7 +69,7 @@ int sem_del(SEM *sem) {
void P(SEM *sem) {
pthread_mutex_lock(&sem->mutex);
- while (0 == sem->value) {
+ while (sem->value <= 0) {
pthread_cond_wait(&sem->condition, &sem->mutex);
}
sem->value--;