From d8700e5190293045bafb454d29d4e581206a8451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Van=20Canneyt?= Date: Sun, 12 Nov 2023 08:49:41 +0100 Subject: [PATCH] * Make TSemaphore and TMutex opt-in for some platforms --- packages/fcl-base/src/syncobjs.pp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/fcl-base/src/syncobjs.pp b/packages/fcl-base/src/syncobjs.pp index 840218f027..6edd2f605f 100644 --- a/packages/fcl-base/src/syncobjs.pp +++ b/packages/fcl-base/src/syncobjs.pp @@ -13,6 +13,16 @@ **********************************************************************} {$mode objfpc} {$h+} + +{$IF DEFINED(WINCE) or DEFINED(AIX) or DEFINED(NETBSD) or DEFINED (OPENBSD)} +{$DEFINE NO_SEMAPHORE_SUPPORT} +{$ENDIF} + +{$IF DEFINED(WINCE)} +{$DEFINE NO_MUTEX_SUPPORT} +{$ENDIF} + + {$IFNDEF FPC_DOTTEDUNITS} unit syncobjs; {$ENDIF FPC_DOTTEDUNITS} @@ -43,10 +53,12 @@ type PSecurityAttributes = Pointer; TEventHandle = Pointer; +{$IFNDEF NO_SEMAPHORE_SUPPORT} {$IFDEF UNIX} TPosixSemaphore = sem_t; PPosixSemaphore = ^TPosixSemaphore; {$ENDIF} +{$ENDIF} const INFINITE = Cardinal(-1); @@ -166,7 +178,8 @@ type {$endif VER3_0} {$ENDIF NOPOINTER} end; - + +{$IFNDEF NO_SEMAPHORE_SUPPORT} TSemaphore = class(THandleObject) {$IFDEF UNIX} Fsem: TPosixSemaphore; @@ -181,7 +194,9 @@ type function Release(aCount: Integer): Integer; reintroduce; overload; function WaitFor(aTimeout: Cardinal = INFINITE): TWaitResult; override; end; +{$ENDIF} +{$IFNDEF NO_MUTEX_SUPPORT} TMutex = class(THandleObject) private {$IFDEF UNIX} @@ -196,7 +211,7 @@ type procedure Acquire; override; procedure Release; override; end; - +{$ENDIF} @@ -652,7 +667,7 @@ end; { --------------------------------------------------------------------- TSemaphore ---------------------------------------------------------------------} - +{$IFNDEF NO_SEMAPHORE_SUPPORT} constructor TSemaphore.Create(aUseCOMWait: boolean = false); begin @@ -816,11 +831,13 @@ begin {$ENDIF} end; +{$ENDIF NO_SEMAPHORE_SUPPORT} { --------------------------------------------------------------------- TMutex ---------------------------------------------------------------------} +{$IFNDEF NO_MUTEX_SUPPORT} constructor TMutex.Create(aUseCOMWait: Boolean = False); @@ -983,5 +1000,6 @@ begin CheckOSError(pthread_mutex_unlock(@FMutex)); {$ENDIF UNIX} end; +{$ENDIF NO_MUTEX_SUPPORT} end.