home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / MAXONPASCAL2.DMS / in.adf / INCLUDE / exec / semaphores.h < prev    next >
Encoding:
Text File  |  1994-07-25  |  1.2 KB  |  53 lines

  1. {$if not def EXEC_SEMAPHORES_H} CONST EXEC_SEMAPHORES_H=0;
  2.  
  3. { *******************************************************************
  4.   ** KickPascal-Include-Datei "exec/semaphores.h" zu Kickstart 3.0 **
  5.   ******************************************************************* }
  6.  
  7. TYPE p_SemaphoreRequest = ^SemaphoreRequest;
  8. TYPE p_SignalSemaphore = ^SignalSemaphore;
  9. TYPE p_SemaphoreMessage = ^SemaphoreMessage;
  10. TYPE p_Semaphore = ^Semaphore;
  11.  
  12.  
  13. {$if not def EXEC_NODES_H;incl "exec/nodes.h";endif}
  14. {$if not def EXEC_LISTS_H;incl "exec/lists.h";endif}
  15. {$if not def EXEC_PORTS_H;incl "exec/ports.h";endif}
  16. {$if not def EXEC_TASKS_H;incl "exec/tasks.h";endif}
  17.  
  18. TYPE SemaphoreRequest = RECORD
  19.  sr_Link   : MinNode;
  20.  sr_Waiter : p_Task;
  21. END;
  22.  
  23. TYPE SignalSemaphore = RECORD
  24.  ss_Link         : Node;
  25.  ss_NestCount    : Integer;
  26.  ss_WaitQueue    : MinList;
  27.  ss_MultipleLink : SemaphoreRequest;
  28.  ss_Owner        : p_Task;
  29.  ss_QueueCount   : Integer;
  30. END;
  31.  
  32. TYPE SemaphoreMessage = RECORD
  33.  ssm_Message     : Message;
  34.  ssm_Semaphore   : p_SignalSemaphore;
  35. END;
  36.  
  37. CONST
  38.  SM_SHARED    = 1;
  39.  SM_EXCLUSIVE = 0;
  40.  
  41.  
  42. TYPE Semaphore = RECORD
  43.  sm_MsgPort : MsgPort;
  44.  sm_Bids    : Integer;
  45. END;
  46.  
  47. {
  48.   ** Zur Information 
  49.   ** sm_LockMsg = mp_SigTask
  50. }
  51.  
  52. {$endif}
  53.