projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fio man page still refers to old mailing list
[fio.git]
/
mutex.c
diff --git
a/mutex.c
b/mutex.c
index 7d072186686d21779280cf28fe10d8ed867f5e63..1538f62c4b1a286ebe015c299031ffede126e2c4 100644
(file)
--- a/
mutex.c
+++ b/
mutex.c
@@
-9,6
+9,7
@@
#include "log.h"
#include "mutex.h"
#include "arch/arch.h"
#include "log.h"
#include "mutex.h"
#include "arch/arch.h"
+#include "os/os.h"
void fio_mutex_remove(struct fio_mutex *mutex)
{
void fio_mutex_remove(struct fio_mutex *mutex)
{
@@
-22,7
+23,7
@@
struct fio_mutex *fio_mutex_init(int value)
struct fio_mutex *mutex = NULL;
pthread_mutexattr_t attr;
pthread_condattr_t cond;
struct fio_mutex *mutex = NULL;
pthread_mutexattr_t attr;
pthread_condattr_t cond;
- int fd, ret;
+ int fd, ret
, mflag
;
fd = mkstemp(mutex_name);
if (fd < 0) {
fd = mkstemp(mutex_name);
if (fd < 0) {
@@
-48,19
+49,28
@@
struct fio_mutex *fio_mutex_init(int value)
mutex->mutex_fd = fd;
mutex->value = value;
mutex->mutex_fd = fd;
mutex->value = value;
+ /*
+ * Not all platforms support process shared mutexes (FreeBSD)
+ */
+#ifdef FIO_HAVE_PSHARED_MUTEX
+ mflag = PTHREAD_PROCESS_SHARED;
+#else
+ mflag = PTHREAD_PROCESS_PRIVATE;
+#endif
+
ret = pthread_mutexattr_init(&attr);
if (ret) {
log_err("pthread_mutexattr_init: %s\n", strerror(ret));
goto err;
}
ret = pthread_mutexattr_init(&attr);
if (ret) {
log_err("pthread_mutexattr_init: %s\n", strerror(ret));
goto err;
}
- ret = pthread_mutexattr_setpshared(&attr,
PTHREAD_PROCESS_SHARED
);
+ ret = pthread_mutexattr_setpshared(&attr,
mflag
);
if (ret) {
log_err("pthread_mutexattr_setpshared: %s\n", strerror(ret));
goto err;
}
pthread_condattr_init(&cond);
if (ret) {
log_err("pthread_mutexattr_setpshared: %s\n", strerror(ret));
goto err;
}
pthread_condattr_init(&cond);
- pthread_condattr_setpshared(&cond,
PTHREAD_PROCESS_SHARED
);
+ pthread_condattr_setpshared(&cond,
mflag
);
pthread_cond_init(&mutex->cond, &cond);
ret = pthread_mutex_init(&mutex->lock, &attr);
pthread_cond_init(&mutex->cond, &cond);
ret = pthread_mutex_init(&mutex->lock, &attr);