home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / inc&ad2.0 / includes / exec / semaphores.h < prev    next >
C/C++ Source or Header  |  1992-09-01  |  1KB  |  63 lines

  1. #ifndef    EXEC_SEMAPHORES_H
  2. #define    EXEC_SEMAPHORES_H
  3. /*
  4. **    $Filename: exec/semaphores.h $
  5. **    $Release: 2.04 Includes, V37.4 $
  6. **    $Revision: 36.6 $
  7. **    $Date: 90/05/10 $
  8. **
  9. **    Definitions for locking functions.
  10. **
  11. **    (C) Copyright 1986-1991 Commodore-Amiga, Inc.
  12. **        All Rights Reserved
  13. */
  14.  
  15. #ifndef EXEC_NODES_H
  16. #include "exec/nodes.h"
  17. #endif /* EXEC_NODES_H */
  18.  
  19. #ifndef EXEC_LISTS_H
  20. #include "exec/lists.h"
  21. #endif /* EXEC_LISTS_H */
  22.  
  23. #ifndef EXEC_PORTS_H
  24. #include "exec/ports.h"
  25. #endif /* EXEC_PORTS_H */
  26.  
  27. #ifndef EXEC_TASKS_H
  28. #include "exec/tasks.h"
  29. #endif /* EXEC_TASKS_H */
  30.  
  31.  
  32. /****** SignalSemaphore *********************************************/
  33.  
  34. /* Private structure used by ObtainSemaphore() */
  35. struct SemaphoreRequest {
  36.     struct  MinNode sr_Link;
  37.     struct  Task *sr_Waiter;
  38. };
  39.  
  40. /* Signal Semaphore data structure */
  41. struct SignalSemaphore {
  42.     struct  Node ss_Link;
  43.     WORD    ss_NestCount;
  44.     struct  MinList ss_WaitQueue;
  45.     struct  SemaphoreRequest ss_MultipleLink;
  46.     struct  Task *ss_Owner;
  47.     WORD    ss_QueueCount;
  48. };
  49.  
  50.  
  51.  
  52. /****** Semaphore (Procure/Vacate type) *****************************/
  53.  
  54. struct Semaphore {
  55.     struct MsgPort sm_MsgPort;
  56.     WORD   sm_Bids;
  57. };
  58.  
  59. #define sm_LockMsg    mp_SigTask
  60.  
  61.  
  62. #endif    /* EXEC_SEMAPHORES_H */
  63.