semLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:4k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* semLib.h - semaphore library header file */
  2. /* Copyright 1984-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 04f,19oct01,bwa  Added SEM_EVENTSEND_ERR_NOTIFY option.
  7. 04e,16feb98,cdp  added #ifndef _ASMLANGUAGE.
  8. 04d,10jul96,dbt  added declaration of semMGiveForce (SPR #4352).
  9.  Updated copyright.
  10. 03c,14jul94,dvs  added non-ANSI prototype for semCreate/semOLibInit (SPR# 2648).
  11. 03b,22sep92,rrr  added support for c++
  12. 03a,04jul92,jcf  cleaned up.
  13. 02k,26may92,rrr  the tree shuffle
  14. 02j,18apr92,jmm  added prototype for semTerminate
  15. 02i,19nov91,rrr  shut up some ansi warnings.
  16. 02h,04oct91,rrr  passed through the ansification filter
  17.   -fixed #else and #endif
  18.   -changed ASMLANGUAGE to _ASMLANGUAGE
  19.   -changed copyright notice
  20. 02g,10jun91.del  added pragma for gnu960 alignment.
  21. 02f,16oct90,shl  made #else ANSI style.
  22. 02e,05oct90,dnw  deleted private functions; doc tweaks
  23. 02d,05oct90,shl  added ANSI function prototypes.
  24.                  made #endif ANSI style.
  25.                  added copyright notice.
  26. 02c,27jun90,jcf  added defines for optimized version.
  27. 02a,26jun90,jcf  rewritten to provide binary/counting/mutex w/ one structure.
  28.  introduced semaphore options.
  29.  removed generic status codes.
  30. 01a,02jan90,jcf  written.
  31. */
  32. #ifndef __INCsemLibh
  33. #define __INCsemLibh
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. #include "vxWorks.h"
  38. #include "vwModNum.h"
  39. /* generic status codes */
  40. #define S_semLib_INVALID_STATE (M_semLib | 101)
  41. #define S_semLib_INVALID_OPTION (M_semLib | 102)
  42. #define S_semLib_INVALID_QUEUE_TYPE (M_semLib | 103)
  43. #define S_semLib_INVALID_OPERATION (M_semLib | 104)
  44. /* semaphore options */
  45. #define SEM_Q_MASK  0x03 /* q-type mask */
  46. #define SEM_Q_FIFO  0x00 /* first in first out queue */
  47. #define SEM_Q_PRIORITY  0x01 /* priority sorted queue */
  48. #define SEM_DELETE_SAFE  0x04 /* owner delete safe (mutex opt.) */
  49. #define SEM_INVERSION_SAFE  0x08 /* no priority inversion (mutex opt.) */
  50. #define SEM_EVENTSEND_ERR_NOTIFY 0x10 /* notify when eventRsrcSend fails */
  51. #ifndef _ASMLANGUAGE
  52. /* binary semaphore initial state */
  53. typedef enum /* SEM_B_STATE */
  54.     {
  55.     SEM_EMPTY, /* 0: semaphore not available */
  56.     SEM_FULL /* 1: semaphore available */
  57.     } SEM_B_STATE;
  58. typedef struct semaphore *SEM_ID;
  59. /* function declarations */
  60. #if defined(__STDC__) || defined(__cplusplus)
  61. extern STATUS  semGive (SEM_ID semId);
  62. extern STATUS  semTake (SEM_ID semId, int timeout);
  63. extern STATUS  semFlush (SEM_ID semId);
  64. extern STATUS  semDelete (SEM_ID semId);
  65. extern int  semInfo (SEM_ID semId, int idList[], int maxTasks);
  66. extern STATUS  semBLibInit (void);
  67. extern SEM_ID  semBCreate (int options, SEM_B_STATE initialState);
  68. extern STATUS  semCLibInit (void);
  69. extern SEM_ID  semCCreate (int options, int initialCount);
  70. extern STATUS  semMLibInit (void);
  71. extern SEM_ID  semMCreate (int options);
  72. extern STATUS   semMGiveForce (SEM_ID semId);
  73. extern STATUS  semOLibInit (void);
  74. extern SEM_ID  semCreate (void);
  75. extern void  semShowInit (void);
  76. extern STATUS  semShow (SEM_ID semId, int level);
  77. #else
  78. extern STATUS  semGive ();
  79. extern STATUS  semTake ();
  80. extern STATUS  semFlush ();
  81. extern STATUS  semDelete ();
  82. extern int  semInfo ();
  83. extern STATUS  semBLibInit ();
  84. extern SEM_ID  semBCreate ();
  85. extern STATUS  semCLibInit ();
  86. extern SEM_ID  semCCreate ();
  87. extern STATUS  semMLibInit ();
  88. extern SEM_ID  semMCreate ();
  89. extern STATUS   semMGiveForce ();
  90. extern STATUS  semOLibInit ();
  91. extern SEM_ID  semCreate ();
  92. extern void  semShowInit ();
  93. extern STATUS  semShow ();
  94. #endif /* __STDC__ */
  95. #endif /* _ASMLANGUAGE */
  96. #ifdef __cplusplus
  97. }
  98. #endif
  99. #endif /* __INCsemLibh */