hv_vos_Semaphore.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * @file hv_vos_Semaphore.h
  3. * @brief Header file of Semaphore.
  4. *
  5. * @verbatim
  6. * ==============================================================================
  7. * ##### How to use #####
  8. * ==============================================================================
  9. * (+) Use ()
  10. *
  11. * @endverbatim
  12. * @author HiView SoC Software Team
  13. * @version 1.0.0
  14. * @date 2023-03-01
  15. */
  16. #ifndef _HV_VOS_SEMAPHORE_H
  17. #define _HV_VOS_SEMAPHORE_H
  18. #include "hv_vos_Types.h"
  19. VOS_EXTERN_C_BEGIN
  20. /** @defgroup VOS_SEMAPHORE VOS_SEMAPHORE
  21. * VOS semaphore functions
  22. * @{
  23. */
  24. /** @brief semaphore forward declaration */
  25. typedef struct _HV_VOS_SEMAPHORE_S HV_VOS_SEMAPHORE_S;
  26. /** @brief Create semaphore
  27. *
  28. * @return semaphore pointer, return NULL if create fail
  29. */
  30. HV_VOS_SEMAPHORE_S *Hv_Vos_InitSemaphore(int maxCount, int initialCount);
  31. /** @brief Destroy semaphore
  32. *
  33. * @param self semaphore pointer
  34. * @return result
  35. */
  36. void Hv_Vos_CleanupSemaphore(HV_VOS_SEMAPHORE_S *self);
  37. /** @brief acquire semaphore
  38. *
  39. * @param self semaphore pointer
  40. */
  41. BOOL Hv_Vos_AcquireSemaphore(HV_VOS_SEMAPHORE_S *self);
  42. /** @brief acquire semaphore
  43. *
  44. * @param self semaphore pointer
  45. * @param timeoutMs wait milliseconds
  46. */
  47. BOOL Hv_Vos_TimedAcquireSemaphore(HV_VOS_SEMAPHORE_S *self,UINT32 timeoutMs);
  48. /** @brief release semaphore
  49. *
  50. * @param self semaphore pointer
  51. */
  52. BOOL Hv_Vos_ReleaseSemaphore(HV_VOS_SEMAPHORE_S *self);
  53. /** @brief release semaphore in ISR
  54. *
  55. * @param self semaphore pointer
  56. */
  57. BOOL Hv_Vos_ReleaseSemaphoreFromISR(HV_VOS_SEMAPHORE_S *self);
  58. /** @} */ //end of group VOS_SEMAPHORE
  59. VOS_EXTERN_C_END
  60. #endif