arch.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /*
  2. * @Author: jiejie
  3. * @Github: https://github.com/jiejieTop
  4. * @Date: 2019-12-26 19:11:34
  5. * @LastEditTime: 2020-03-02 01:32:23
  6. * @Description: the code belongs to jiejie, please keep the author information and source code according to the license.
  7. */
  8. #include "salof_defconfig.h"
  9. #ifdef SALOF_USING_LOG
  10. void *salof_alloc(unsigned int size)
  11. {
  12. return tos_mmheap_alloc(size);
  13. }
  14. void salof_free(void *mem)
  15. {
  16. tos_mmheap_free(mem);
  17. }
  18. salof_tcb salof_task_create(const char *name,
  19. void (*task_entry)(void *param),
  20. void * const param,
  21. unsigned int stack_size,
  22. unsigned int priority,
  23. unsigned int tick)
  24. {
  25. salof_tcb task;
  26. k_err_t err;
  27. k_stack_t *task_stack;
  28. task = salof_alloc(sizeof(k_task_t));
  29. task_stack = salof_alloc(stack_size);
  30. err = tos_task_create(task,
  31. (char*)name,
  32. task_entry,
  33. param,
  34. priority,
  35. task_stack,
  36. stack_size,
  37. tick);
  38. if(err != K_ERR_NONE)
  39. {
  40. tos_mmheap_free(task);
  41. tos_mmheap_free(task_stack);
  42. }
  43. return task;
  44. }
  45. salof_mutex salof_mutex_create(void)
  46. {
  47. salof_mutex mutex;
  48. mutex = salof_alloc(sizeof(k_mutex_t));
  49. tos_mutex_create((salof_mutex)mutex);
  50. return mutex;
  51. }
  52. void salof_mutex_delete(salof_mutex mutex)
  53. {
  54. tos_mutex_destroy((salof_mutex)mutex);
  55. tos_mmheap_free(mutex);
  56. }
  57. int salof_mutex_pend(salof_mutex mutex, unsigned int timeout)
  58. {
  59. if(tos_mutex_pend_timed((salof_mutex)mutex, timeout) != K_ERR_NONE)
  60. return -1;
  61. return 0;
  62. }
  63. int salof_mutex_post(salof_mutex mutex)
  64. {
  65. if(tos_mutex_post((salof_mutex)mutex) != K_ERR_NONE)
  66. return -1;
  67. return 0;
  68. }
  69. salof_sem salof_sem_create(void)
  70. {
  71. salof_sem sem;
  72. sem = salof_alloc(sizeof(k_sem_t));
  73. tos_sem_create((salof_sem)sem, 0);
  74. return sem;
  75. }
  76. void salof_sem_delete(salof_sem sem)
  77. {
  78. tos_sem_destroy((salof_sem)sem);
  79. tos_mmheap_free(sem);
  80. }
  81. int salof_sem_pend(salof_sem sem, unsigned int timeout)
  82. {
  83. if(tos_sem_pend((salof_sem)sem, timeout) != K_ERR_NONE)
  84. return -1;
  85. return 0;
  86. }
  87. int salof_sem_post(salof_sem sem)
  88. {
  89. if(tos_sem_post((salof_sem)sem) != K_ERR_NONE)
  90. return -1;
  91. return 0;
  92. }
  93. unsigned int salof_get_tick(void)
  94. {
  95. return tos_systick_get();
  96. }
  97. char *salof_get_task_name(void)
  98. {
  99. return k_curr_task->name;
  100. }
  101. #endif