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

VxWorks

开发平台:

C/C++

  1. /* semaphore.h - header for POSIX 1003.4 synchronization */
  2. /* Copyright 1984-1994 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01d,12mar99,elg  include private header to get semPxLibInit() (SPR 20532).
  7. 01c,08apr94,dvs  added pragma for gnu960 alignment.
  8. 01b,05jan94,kdl  changed sem_t "close" field to "refCnt"; general cleanup.
  9. 01a,06apr93,smb  written
  10. */
  11. #ifndef __INCsemaphoreh
  12. #define __INCsemaphoreh
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /* includes */
  17. #include "limits.h"
  18. #include "semLib.h"
  19. #include "objLib.h"
  20. #include "symLib.h"
  21. #include "private/semPxLibP.h"
  22. /* defines */
  23. #define SEM_VALUE_MAX 100  /* maximum value to initialize a semaphore */
  24. #define SEM_NSEMS_MAX 100  /* maximum number of semaphores in the system */
  25. extern SYMTAB_ID       posixNameTbl;              /* POSIX symbol table id */
  26.  
  27. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  28. #pragma align 1                 /* tell gcc960 not to optimize alignments */
  29. #endif  /* CPU_FAMILY==I960 */
  30. typedef struct sem_des  /* sem_t */
  31.     {
  32.     OBJ_CORE    objCore;        /* semaphore object core */
  33.     SEM_ID      semId; /* semaphore identifier */
  34.     int         refCnt; /* number of attachments */
  35.     char *      sem_name;  /* name of semaphore */
  36.     } sem_t;
  37. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  38. #pragma align 0                 /* turn off alignment requirement */
  39. #endif  /* CPU_FAMILY==I960 */
  40. #undef _POSIX_NO_TRUNC /* do not limit pathname length */
  41. /* Function declarations */
  42. #if defined(__STDC__) || defined(__cplusplus)
  43. extern int  sem_init ( sem_t *, int, unsigned int);
  44. extern int  sem_destroy ( sem_t *);
  45. extern sem_t *  sem_open ( const char *, int, ...);
  46. extern int  sem_close ( sem_t *);
  47. extern int  sem_unlink ( const char *);
  48. extern int  sem_wait ( sem_t *);
  49. extern int  sem_trywait ( sem_t *);
  50. extern int  sem_post ( sem_t *);
  51. extern int  sem_getvalue ( sem_t *, int *);
  52. #else   /* __STDC__ */
  53. extern int  sem_init ();
  54. extern int  sem_destroy ();
  55. extern sem_t *  sem_open ();
  56. extern int  sem_close ();
  57. extern int  sem_unlink ();
  58. extern int  sem_wait ();
  59. extern int  sem_trywait ();
  60. extern int  sem_post ();
  61. extern int  sem_getvalue ();
  62. #endif  /* __STDC__ */
  63. #ifdef __cplusplus
  64. }
  65. #endif
  66. #endif /* __INCsemaphoreh */