luat_rtos.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef LUAT_RTOS_H
  2. #define LUAT_RTOS_H
  3. #include "luat_base.h"
  4. /* ----------------------------------- thread ----------------------------------- */
  5. typedef int (*thread_entry) (void*);
  6. typedef struct luat_thread{
  7. thread_entry thread;
  8. const char *name;
  9. uint32_t stack_size;
  10. uint32_t priority;
  11. char* stack_buff;
  12. void* userdata;
  13. }luat_thread_t;
  14. LUAT_RET luat_thread_start(luat_thread_t* thread);
  15. LUAT_RET luat_thread_stop(luat_thread_t* thread);
  16. LUAT_RET luat_thread_delete(luat_thread_t* thread);
  17. /* ----------------------------------- semaphore ----------------------------------- */
  18. typedef struct luat_sem{
  19. const char *name;
  20. uint32_t value;
  21. uint8_t flag;
  22. void* userdata;
  23. }luat_sem_t;
  24. LUAT_RET luat_sem_create(luat_sem_t* semaphore);
  25. LUAT_RET luat_sem_delete(luat_sem_t* semaphore);
  26. LUAT_RET luat_sem_take(luat_sem_t* semaphore,uint32_t timeout);
  27. LUAT_RET luat_sem_release(luat_sem_t* semaphore);
  28. typedef struct luat_rtos_queue {
  29. void* userdata;
  30. }luat_rtos_queue_t;
  31. LUAT_RET luat_queue_create(luat_rtos_queue_t* queue, size_t msgcount, size_t msgsize);
  32. LUAT_RET luat_queue_send(luat_rtos_queue_t* queue, void* msg, size_t msg_size, size_t timeout);
  33. LUAT_RET luat_queue_recv(luat_rtos_queue_t* queue, void* msg, size_t msg_size, size_t timeout);
  34. LUAT_RET luat_queue_free(luat_rtos_queue_t* queue);
  35. #endif