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

VxWorks

开发平台:

C/C++

  1. /* semSmLibP.h - private shared semaphore library header file */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01c,29jan93,pme  added little endian support
  7. 01b,22sep92,rrr  added support for c++
  8. 01a,19jul92,pme  extracted from semSmLib v1c.
  9. */
  10. #ifndef __INCsemSmLibPh
  11. #define __INCsemSmLibPh
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. #include "vxWorks.h"
  16. #include "vwModNum.h"
  17. #include "semSmLib.h"
  18. #include "smDllLib.h"
  19. /* typedefs */
  20. #define SEM_TYPE_SM_BINARY      0x4     /* shared binary semaphore */
  21. #define SEM_TYPE_SM_COUNTING    0x5     /* shared counting semaphore */
  22. #if (defined (CPU_FAMILY) && (CPU_FAMILY==I960) && (defined __GNUC__))
  23. #pragma align 1                 /* tell gcc960 not to optimize alignments */
  24. #endif  /* CPU_FAMILY==I960 */
  25. typedef struct  sm_semaphore    /* SHARED MEMORY SEMAPHORE */
  26.     {
  27.     UINT32      verify;         /* 0x00: semaphore verification */
  28.     UINT32      objType;        /* 0x04: semaphore type */
  29.     UINT32      lock;           /* 0x08: semaphore spin lock */
  30.     SM_DL_LIST  smPendQ;        /* 0x0c: semaphore pend Queue */
  31.     union
  32.         {
  33.         UINT32           flag;  /* 0x14: current state */
  34.         UINT32           count; /* 0x14: semaphore counter */
  35.         } state;
  36.     } SM_SEMAPHORE;
  37. #if (defined (CPU_FAMILY) && (CPU_FAMILY==I960) && (defined __GNUC__))
  38. #pragma align 0                 /* turn off alignment requirement */
  39. #endif  /* CPU_FAMILY==I960 */
  40. /* variable declarations */
  41. extern FUNCPTR semSmShowRtn; /* shared semaphore show routine ptr */
  42. extern FUNCPTR semSmInfoRtn; /* shared semaphore info routine ptr */
  43. /* function declarations */
  44. #if defined(__STDC__) || defined(__cplusplus)
  45. extern void   semSmLibInit (void);
  46. extern STATUS semSmBInit (SM_SEMAPHORE * pSem, int options,
  47.                           SEM_B_STATE initialState);
  48. extern STATUS semSmCInit (SM_SEMAPHORE * pSem, int options, int initialCount);
  49. extern STATUS semSmGive (SM_SEM_ID smSemId);
  50. extern STATUS semSmTake (SM_SEM_ID smSemId, int timeout);
  51. extern STATUS semSmFlush (SM_SEM_ID smSemId);
  52. extern int    semSmInfo (SM_SEM_ID smSemId, int idList[], int maxTasks);
  53. extern int    semSmShow (SM_SEM_ID smSemId, int level);
  54. #else   /* __STDC__ */
  55. extern void   semSmLibInit ();
  56. extern STATUS semSmBInit ();
  57. extern STATUS semSmCInit ();
  58. extern STATUS semSmGive ();
  59. extern STATUS semSmTake ();
  60. extern STATUS semSmFlush ();
  61. extern int    semSmInfo ();
  62. extern int    semSmShow ();
  63. #endif  /* __STDC__ */
  64. #ifdef __cplusplus
  65. }
  66. #endif
  67. #endif /* __INCsemSmLibPh */