From 155d6ea3f9217bfc06c0a894719799a1cff30ad9 Mon Sep 17 00:00:00 2001 From: Greg V Date: Fri, 23 Nov 2018 20:13:43 +0300 Subject: Do not use O_RDWR on semaphores on FreeBSD This is forbidden (returns EINVAL) --- posix/JackPosixSemaphore.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'posix') diff --git a/posix/JackPosixSemaphore.cpp b/posix/JackPosixSemaphore.cpp index 046179e0..a18b6b70 100644 --- a/posix/JackPosixSemaphore.cpp +++ b/posix/JackPosixSemaphore.cpp @@ -32,8 +32,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #define JACK_SEM_PREFIX "/jack_sem" +#define SEM_DEFAULT_O 0 #else #define JACK_SEM_PREFIX "jack_sem" +#define SEM_DEFAULT_O O_RDWR #endif namespace Jack @@ -152,7 +154,7 @@ bool JackPosixSemaphore::Allocate(const char* name, const char* server_name, int BuildName(name, server_name, fName, sizeof(fName)); jack_log("JackPosixSemaphore::Allocate name = %s val = %ld", fName, value); - if ((fSemaphore = sem_open(fName, O_CREAT | O_RDWR, 0777, value)) == (sem_t*)SEM_FAILED) { + if ((fSemaphore = sem_open(fName, O_CREAT | SEM_DEFAULT_O, 0777, value)) == (sem_t*)SEM_FAILED) { jack_error("Allocate: can't check in named semaphore name = %s err = %s", fName, strerror(errno)); return false; } else { @@ -180,7 +182,7 @@ bool JackPosixSemaphore::ConnectInput(const char* name, const char* server_name) return true; } - if ((fSemaphore = sem_open(fName, O_RDWR)) == (sem_t*)SEM_FAILED) { + if ((fSemaphore = sem_open(fName, SEM_DEFAULT_O)) == (sem_t*)SEM_FAILED) { jack_error("Connect: can't connect named semaphore name = %s err = %s", fName, strerror(errno)); return false; } else if (fSemaphore) { -- cgit v1.2.1