home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / dossemap.def < prev    next >
Text File  |  1995-06-24  |  5KB  |  159 lines

  1. DEFINITION MODULE DOSSEMAPHORES;
  2.  
  3. (************************************************************************
  4.   OS/2 2.0 interface for semaphore support
  5.            7-Jun-95  : Bug fixed DosCreateMutexSem()
  6.            24-Jun-95 : SEM_INDEFINITE_WAIT  
  7.  
  8.   Copyright (c) 1992 by Juergen Neuhoff
  9. *************************************************************************)
  10.  
  11. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  12. (*$CDECL+    C-style procedures                                         *)
  13. (*$A         default alignment for record fields                        *)
  14.  
  15. IMPORT SYSTEM;
  16. FROM   OS2DEF IMPORT TYPEPREFIX, APIRET, TID, PID;
  17.  
  18. CONST (* Semaphore Attributes *)
  19.   DC_SEM_SHARED   = 01H; (* DosCreateMutex, DosCreateEvent, and     *)
  20.                          (*   DosCreateMuxWait use it to indicate   *)
  21.                          (*   whether the semaphore is shared or    *)
  22.                          (*   private when the PSZ is null          *)
  23.   DCMW_WAIT_ANY   = 02H; (* DosCreateMuxWait option for wait on any *)
  24.                          (*   event/mutex to occur                  *)
  25.   DCMW_WAIT_ALL   = 04H; (* DosCreateMuxWait option for wait on all *)
  26.                          (*   events/mutexs to occur                *)
  27.  
  28.   SEM_INDEFINITE_WAIT   = 0FFFFFFFFH;
  29.   SEM_IMMEDIATE_RETURN  = 0;
  30.  
  31. TYPE
  32.   HSEM       = SYSTEM.ADDRESS;        (* semaphore handle *)
  33.   PHSEM      = POINTER TO HSEM;
  34.   SEMRECORD  = RECORD
  35.     CASE       : TYPEPREFIX OF
  36.     | TRUE     :
  37.       hsemCur  : HSEM;
  38.       ulUser   : LONGCARD;
  39.     | FALSE    :
  40.       Cur      : HSEM;
  41.       User     : LONGCARD;
  42.     END;       END;
  43.   PSEMRECORD = POINTER TO SEMRECORD;
  44.   HEV        = LONGCARD;              (* event handle *)
  45.   PHEV       = POINTER TO HEV;
  46.   HMTX       = LONGCARD;              (* mutex semaphore handle *)
  47.   PHMTX      = POINTER TO HMTX;
  48.   HMUX       = LONGCARD;              (* muxwait semaphore handle *)
  49.   PHMUX      = POINTER TO HMUX;
  50.  
  51. PROCEDURE DosCreateEventSem
  52. ( Name                  : SYSTEM.ADDRESS;
  53.   VAR EventHandle       : HEV;
  54.   EventAttr             : LONGCARD;
  55.   InitialState          : BOOLEAN
  56. )                       : APIRET;
  57.  
  58. PROCEDURE DosOpenEventSem
  59. ( Name                  : SYSTEM.ADDRESS;
  60.   VAR EventHandle       : HEV
  61. )                       : APIRET;
  62.  
  63. PROCEDURE DosCloseEventSem
  64. ( EventHandle           : HEV
  65. )                       : APIRET;
  66.  
  67. PROCEDURE DosResetEventSem
  68. ( EventHandle           : HEV;
  69.   VAR PostCt            : LONGCARD
  70. )                       : APIRET;
  71.  
  72. PROCEDURE DosPostEventSem
  73. ( EventHandle           : HEV
  74. )                       : APIRET;
  75.  
  76. PROCEDURE DosWaitEventSem
  77. ( EventHandle           : HEV;
  78.   TimeOut               : LONGCARD (* in milliseconds *)
  79. )                       : APIRET;
  80.  
  81. PROCEDURE DosQueryEventSem
  82. ( EventHandle           : HEV;
  83.   VAR PostCt            : LONGCARD
  84. )                       : APIRET;
  85.  
  86. PROCEDURE DosCreateMutexSem
  87. ( Name                  : SYSTEM.ADDRESS;
  88.   VAR MutexHandle       : HMTX;
  89.   Attr                  : LONGCARD;
  90.   InitialState          : BOOLEAN
  91. )                       : APIRET;
  92.  
  93. PROCEDURE DosOpenMutexSem
  94. ( Name                  : SYSTEM.ADDRESS;
  95.   VAR MutexHandle       : HMTX
  96. )                       : APIRET;
  97.  
  98. PROCEDURE DosCloseMutexSem
  99. ( MutexHandle           : HMTX
  100. )                       : APIRET;
  101.  
  102. PROCEDURE DosRequestMutexSem
  103. ( MutexHandle           : HMTX;
  104.   TimeOut               : LONGCARD (* in millisenconds *)
  105. )                       : APIRET;
  106.  
  107. PROCEDURE DosReleaseMutexSem
  108. ( MutexHandle           : HMTX
  109. )                       : APIRET;
  110.  
  111. PROCEDURE DosQueryMutexSem
  112. ( MutexHandle           : HMTX;
  113.   VAR OwnerProcessId    : PID;
  114.   VAR OwnerThreadId     : TID;
  115.   VAR Count             : LONGCARD
  116. )                       : APIRET;
  117.  
  118. PROCEDURE DosCreateMuxWaitSem
  119. ( Name                  : SYSTEM.ADDRESS;
  120.   VAR MuxWaitHandle     : HMUX;
  121.   SemRecCount           : LONGCARD;
  122.   VAR SemRec            : ARRAY OF SEMRECORD;
  123.   SemAttr               : LONGCARD
  124. )                       : APIRET;
  125.  
  126. PROCEDURE DosOpenMuxWaitSem
  127. ( Name                  : SYSTEM.ADDRESS;
  128.   VAR MuxWaitHandle     : HMUX
  129. )                       : APIRET;
  130.  
  131. PROCEDURE DosCloseMuxWaitSem
  132. ( MuxWaitHandle         : HMUX
  133. )                       : APIRET;
  134.  
  135. PROCEDURE DosWaitMuxWaitSem
  136. ( MuxWaitHandle         : HMUX;
  137.   TimeOut               : LONGCARD; (* in milliseconds *)
  138.   VAR User              : LONGCARD
  139. )                       : APIRET;
  140.  
  141. PROCEDURE DosAddMuxWaitSem
  142. ( MuxWaitHandle         : HMUX;
  143.   VAR SemRec            : SEMRECORD
  144. )                       : APIRET;
  145.  
  146. PROCEDURE DosDeleteMuxWaitSem
  147. ( MuxWaitHandle         : HMUX;
  148.   SemHandle             : HSEM
  149. )                       : APIRET;
  150.  
  151. PROCEDURE DosQueryMuxWaitSem
  152. ( MuxWaitHandle         : HMUX;
  153.   VAR SemRecCount       : LONGCARD;
  154.   VAR SemRec            : ARRAY OF SEMRECORD;
  155.   VAR SemAttr           : LONGCARD
  156. )                       : APIRET;
  157.  
  158. END DOSSEMAPHORES.
  159.