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

DVD

开发平台:

C/C++

  1. /*
  2.  * include/mutex.h
  3.  *
  4.  * Copyright (C) STMicroelectronics Limited 2002. All rights reserved.
  5.  *
  6.  * Public header file for the OS20 mutex objects
  7.  */
  8. #ifndef __os20_mutex_h
  9. #define __os20_mutex_h
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. #include "semaphor.h"
  14. struct mutex_class_s;
  15. typedef struct mutex_s {
  16. const struct mutex_class_s *mutex_class; /* class pointer */
  17. semaphore_t                 mutex_sem;   /* underlying semaphore */
  18. task_t                     *mutex_owner; /* owner task */
  19. int                         mutex_count; /* lock count */
  20. struct mutex_s             *mutex_next;  /* link when listed */
  21. } mutex_t;
  22. #ifdef __CORE__
  23. #pragma ST_translate (mutex_init_fifo,       "mutex_init_fifo%os")
  24. #pragma ST_translate (mutex_create_fifo,     "mutex_create_fifo%os")
  25. #pragma ST_translate (mutex_init_priority,   "mutex_init_priority%os")
  26. #pragma ST_translate (mutex_create_priority, "mutex_create_priority%os")
  27. #pragma ST_translate (mutex_delete,          "mutex_delete%os")
  28. #pragma ST_translate (mutex_lock,            "mutex_lock%os")
  29. #pragma ST_translate (mutex_release,         "mutex_release%os")
  30. #pragma ST_translate (mutex_trylock,         "mutex_trylock%os")
  31. #else
  32. #pragma IMS_translate (mutex_init_fifo,       "mutex_init_fifo%os")
  33. #pragma IMS_translate (mutex_create_fifo,     "mutex_create_fifo%os")
  34. #pragma IMS_translate (mutex_init_priority,   "mutex_init_priority%os")
  35. #pragma IMS_translate (mutex_create_priority, "mutex_create_priority%os")
  36. #pragma IMS_translate (mutex_delete,          "mutex_delete%os")
  37. #pragma IMS_translate (mutex_lock,            "mutex_lock%os")
  38. #pragma IMS_translate (mutex_release,         "mutex_release%os")
  39. #endif
  40. void     mutex_init_fifo         (mutex_t *mutex);
  41. mutex_t *mutex_create_fifo       (void);
  42. void     mutex_init_priority     (mutex_t *mutex);
  43. mutex_t *mutex_create_priority   (void);
  44. int      mutex_delete            (mutex_t *mutex);
  45. void     mutex_lock              (mutex_t *mutex);
  46. int      mutex_release           (mutex_t *mutex);
  47. int      mutex_trylock           (mutex_t *mutex);
  48. #ifdef __cplusplus
  49. }
  50. #endif
  51. #endif /* __os20_mutex_h */