浏览代码

* more compatibility changes (semaphores)

Tomas Hajny 24 年之前
父节点
当前提交
b13f5445c7
共有 1 个文件被更改,包括 52 次插入6 次删除
  1. 52 6
      rtl/os2/doscalls.pas

+ 52 - 6
rtl/os2/doscalls.pas

@@ -190,6 +190,9 @@ function DosExitCritSec:longint; cdecl;
 
 const   deThread=0;         {Terminate thread only.}
         deProcess=1;        {Terminate the whole process.}
+(* The following for compatibility only *)
+        Exit_Thread = deThread;
+        Exit_Process = deProcess;
 
 {Terminate the thread or the program. Never returns, so it's defined as
  procedure.}
@@ -1401,6 +1404,13 @@ const   smShared        = $0001;    {Semaphore is shared.}
                                      is cleared.}
         smMWWaitAll     = $0004;    {MuxWait only: Wait until all semaphores
                                      are cleared.}
+        Sem_Indefinite_Wait = -1;   {DosRequestMutExSem blocks the calling
+                                     thread indefinitely.}
+        Sem_Immediate_Return = 0;   {DosRequestMutExSem returns immediately
+                                     without blocking the calling thread.}
+(* The following just for compatibility. *)
+        dcMW_Wait_Any = smMWWaitAny;
+        dcMW_Wait_All = smMWWaitAll;
 
 type   PSemRecord=^TSemRecord;
        TSemRecord=record
@@ -1413,12 +1423,16 @@ type   PSemRecord=^TSemRecord;
 
 {Create an event semaphore.
  Name       = Optional: Name of semaphore to create. Must start with '\SEM32\.
-              Use nil for PChar or '' for string variant for noname. A
+              Use nil for PChar or '' for string variant for noname. An
               unnamed semaphore is not shared unless the sm_Shared flag is
               set.
  Handle     = Receives handle of semaphore.
  Attr       = One or more of the smXXXX constants.
  State      = Initial state: 0 = Reset (false), 1 = Posted (true).}
+function DosCreateEventSem(Name:PChar;var Handle:longint;
+                           Attr:longint;State:boolean):longint; cdecl;
+function DosCreateEventSem(const Name:string;var Handle:longint;
+                           Attr:longint;State:boolean):longint;
 function DosCreateEventSem(Name:PChar;var Handle:longint;
                            Attr,State:longint):longint; cdecl;
 function DosCreateEventSem(const Name:string;var Handle:longint;
@@ -1468,7 +1482,11 @@ function DosQueryEventSem(Handle:longint;var Posted:longint):longint; cdecl;
               If a name if used the semaphore is shared.
  Handle     = Receives handle of semaphore.
  Attr       = One or more of the smXXXX constants.
- State      = Initial state: (0=Unowned, 1=Owned.)}
+ State      = Initial state: (0/false=Not owned, 1/true=Owned.)}
+function DosCreateMutExSem(Name:PChar;var Handle:longint;
+                           Attr:longint;State:boolean):longint; cdecl;
+function DosCreateMutExSem(const Name:string;var Handle:longint;
+                           Attr:longint;State:boolean):longint;
 function DosCreateMutExSem(Name:PChar;var Handle:longint;
                            Attr,State:longint):longint; cdecl;
 function DosCreateMutExSem(const Name:string;var Handle:longint;
@@ -1488,7 +1506,8 @@ function DosCloseMutExSem(Handle:longint):longint; cdecl;
  process is halted until the semaphore is released.
  Handle     = Handle of semaphore.
  Timeout    = Return with errorcode if the semaphore is still owned after
-              timeout milliseconds.}
+              timeout milliseconds; special values are Sem_Indefinite_Wait
+              and Sem_Immediate_Return.}
 function DosRequestMutExSem(Handle,Timeout:longint):longint; cdecl;
 
 {Release the ownership of a mutex semaphore.
@@ -3181,8 +3200,13 @@ function DosCreateEventSem(Name:PChar;var Handle:longint;
 
 external 'DOSCALLS' index 324;
 
+function DosCreateEventSem(Name:PChar;var Handle:longint;
+                           Attr:longint;State:boolean):longint; cdecl;
+
+external 'DOSCALLS' index 324;
+
 function DosCreateEventSem(const Name:string;var Handle:longint;
-                           Attr,State:longint):longint;
+                           Attr:longint;State:boolean):longint;
 
 var T:array[0..255] of char;
 
@@ -3196,6 +3220,13 @@ begin
         DosCreateEventSem:=DosCreateEventSem(nil,Handle,Attr,State);
 end;
 
+function DosCreateEventSem(const Name:string;var Handle:longint;
+                           Attr,State:longint):longint;
+
+begin
+    DosCreateEventSem:=DosCreateEventSem(Name,Handle,Attr,boolean(State));
+end;
+
 function DosOpenEventSem(Name:PChar;var Handle:longint):longint; cdecl;
 
 external 'DOSCALLS' index 325;
@@ -3229,13 +3260,18 @@ function DosQueryEventSem(Handle:longint;var Posted:longint):longint; cdecl;
 
 external 'DOSCALLS' index 330;
 
+function DosCreateMutExSem(Name:PChar;var Handle:longint;
+                           Attr:longint;State:boolean):longint; cdecl;
+
+external 'DOSCALLS' index 331;
+
 function DosCreateMutExSem(Name:PChar;var Handle:longint;
                            Attr,State:longint):longint; cdecl;
 
 external 'DOSCALLS' index 331;
 
 function DosCreateMutExSem(const Name:string;var Handle:longint;
-                           Attr,State:longint):longint;
+                           Attr:longint;State:boolean):longint;
 
 var T:array[0..255] of char;
 
@@ -3249,6 +3285,13 @@ begin
         DosCreateMutExSem:=DosCreateMutExSem(nil,Handle,Attr,State);
 end;
 
+function DosCreateMutExSem(const Name:string;var Handle:longint;
+                           Attr,State:longint):longint;
+
+begin
+    DosCreateMutExSem:=DosCreateMutExSem(Name,Handle,Attr,boolean(State));
+end;
+
 function DosOpenMutExSem(Name:PChar;var Handle:longint):longint; cdecl;
 
 external 'DOSCALLS' index 332;
@@ -3949,7 +3992,10 @@ external 'DOSCALLS' index 582;
 end.
 {
   $Log$
-  Revision 1.6  2000-12-21 21:12:43  hajny
+  Revision 1.7  2001-01-14 18:59:13  hajny
+    * more compatibility changes (semaphores)
+
+  Revision 1.6  2000/12/21 21:12:43  hajny
     * TThreadEntry corrected (needed for FCL)
 
   Revision 1.5  2000/10/26 20:07:19  hajny