semaphor.h
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:5k
源码类别:

DVD

开发平台:

C/C++

  1. /*
  2.  * semaphor.h
  3.  *
  4.  * Copyright (C) SGS-THOMSON Microelectronics Ltd. 1997
  5.  *
  6.  * Semaphore handling.
  7.  */
  8. #ifndef __os20_semaphor_h
  9. #define __os20_semaphor_h
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. struct semaphore_class_s;
  14. #ifndef __descriptor_t
  15. #define __descriptor_t
  16. typedef int* descriptor_t;
  17. #endif
  18. #ifndef __clock_t
  19. #define __clock_t
  20. typedef unsigned int clock_t;
  21. #endif
  22. #include "task.h"
  23. typedef struct semaphore_s
  24. {
  25.   const struct semaphore_class_s *semaphore_class;  /* class of sempahore */
  26.   struct semaphore_s*   semaphore_next;         /* next semaphore_t */
  27.   int                   semaphore_count;        /* value of semaphore */
  28.   descriptor_t          semaphore_front;        /* front of queue of */
  29.   descriptor_t          semaphore_back;         /* back of queue */
  30.   tdesc_t*              semaphore_owner;        /* semaphore owner */
  31. } semaphore_t;
  32. #ifdef __CORE__
  33. #pragma ST_translate (semaphore_init_fifo, "semaphore_init_fifo%os")
  34. #pragma ST_translate (semaphore_create_fifo, "semaphore_create_fifo%os")
  35. #pragma ST_translate (semaphore_init_priority, "semaphore_init_priority%os")
  36. #pragma ST_translate (semaphore_create_priority, "semaphore_create_priority%os")
  37. #pragma ST_translate (semaphore_init_fifo_timeout, "semaphore_init_fifo_timeout%os")
  38. #pragma ST_translate (semaphore_create_fifo_timeout, "semaphore_create_fifo_timeout%os")
  39. #pragma ST_translate (semaphore_init_priority_timeout, "semaphore_init_priority_timeout%os")
  40. #pragma ST_translate (semaphore_create_priority_timeout, "semaphore_create_priority_timeout%os")
  41. #pragma ST_translate (semaphore_init_binary, "semaphore_init_binary%os")
  42. #pragma ST_translate (semaphore_create_binary, "semaphore_create_binary%os")
  43. #pragma ST_translate (semaphore_init_fifo_immortal, "semaphore_init_fifo_immortal%os")
  44. #pragma ST_translate (semaphore_wait, "semaphore_wait%os")
  45. #pragma ST_translate (semaphore_signal, "semaphore_signal%os")
  46. #pragma ST_translate (semaphore_delete, "semaphore_delete%os")
  47. #pragma ST_translate (semaphore_value, "semaphore_value%os")
  48. #pragma ST_translate (semaphore_wait_timeout, "semaphore_wait_timeout%os")
  49. #pragma ST_translate (semaphore_list_head, "semaphore_list_head%os")
  50. #pragma ST_translate (semaphore_list_next, "semaphore_list_next%os")
  51. #else
  52. #pragma IMS_translate (semaphore_init_fifo, "semaphore_init_fifo%os")
  53. #pragma IMS_translate (semaphore_create_fifo, "semaphore_create_fifo%os")
  54. #pragma IMS_translate (semaphore_init_priority, "semaphore_init_priority%os")
  55. #pragma IMS_translate (semaphore_create_priority, "semaphore_create_priority%os")
  56. #pragma IMS_translate (semaphore_init_fifo_timeout, "semaphore_init_fifo_timeout%os")
  57. #pragma IMS_translate (semaphore_create_fifo_timeout, "semaphore_create_fifo_timeout%os")
  58. #pragma IMS_translate (semaphore_init_priority_timeout, "semaphore_init_priority_timeout%os")
  59. #pragma IMS_translate (semaphore_create_priority_timeout, "semaphore_create_priority_timeout%os")
  60. #pragma IMS_translate (semaphore_init_binary, "semaphore_init_binary%os")
  61. #pragma IMS_translate (semaphore_create_binary, "semaphore_create_binary%os")
  62. #pragma IMS_translate (semaphore_init_fifo_immortal, "semaphore_init_fifo_immortal%os")
  63. #pragma IMS_translate (semaphore_wait, "semaphore_wait%os")
  64. #pragma IMS_translate (semaphore_signal, "semaphore_signal%os")
  65. #pragma IMS_translate (semaphore_delete, "semaphore_delete%os")
  66. #pragma IMS_translate (semaphore_value, "semaphore_value%os")
  67. #pragma IMS_translate (semaphore_wait_timeout, "semaphore_wait_timeout%os")
  68. #pragma IMS_translate (semaphore_list_head, "semaphore_list_head%os")
  69. #pragma IMS_translate (semaphore_list_next, "semaphore_list_next%os")
  70. #endif
  71. void         semaphore_init_fifo (semaphore_t* Semaphore, int Count);
  72. semaphore_t* semaphore_create_fifo (int Count);
  73. void         semaphore_init_priority (semaphore_t* Semaphore, int Count);
  74. semaphore_t* semaphore_create_priority (int Count);
  75. void         semaphore_init_fifo_timeout (semaphore_t* Semaphore, int Count);
  76. semaphore_t* semaphore_create_fifo_timeout (int Count);
  77. void         semaphore_init_priority_timeout (semaphore_t* Semaphore, int Count);
  78. semaphore_t* semaphore_create_priority_timeout (int Count);
  79. void         semaphore_init_binary (semaphore_t* Semaphore);
  80. semaphore_t* semaphore_create_binary (void);
  81. void         semaphore_init_fifo_immortal(semaphore_t* Semaphore, int Count);
  82. int          semaphore_wait (semaphore_t* Semaphore);
  83. void         semaphore_signal (semaphore_t* Semaphore);
  84. void         semaphore_delete (semaphore_t* Semaphore);
  85. int          semaphore_value (semaphore_t* Semaphore);
  86. int          semaphore_wait_timeout (semaphore_t* Semaphore, const clock_t* timeout);
  87. semaphore_t* semaphore_list_head(void);
  88. semaphore_t* semaphore_list_next(semaphore_t*);
  89. #ifdef __cplusplus
  90. }
  91. #endif
  92. #endif /* __os20_semaphor_h */