hal_thread.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * ===========================================================================================
  3. *
  4. * Filename: thread.c
  5. *
  6. * Description: thread osal for hal layer
  7. *
  8. * Version: Melis3.0
  9. * Create: 2019-11-25 20:29:13
  10. * Revision: none
  11. * Compiler: GCC:version 7.2.1 20170904 (release),ARM/embedded-7-branch revision 255204
  12. *
  13. * Author: caozilong@allwinnertech.com
  14. * Organization: BU1-PSW
  15. * Last Modified: 2020-03-05 09:01:13
  16. *
  17. * ===========================================================================================
  18. */
  19. #include <stdint.h>
  20. #include <hal_thread.h>
  21. #include <kconfig.h>
  22. #include <log.h>
  23. #include <init.h>
  24. void *kthread_create(void (*threadfn)(void *data), void *data, const char *namefmt, ...)
  25. {
  26. rt_thread_t thr;
  27. thr = rt_thread_create(namefmt, threadfn, data, \
  28. HAL_THREAD_STACK_SIZE, \
  29. HAL_THREAD_PRIORITY, \
  30. HAL_THREAD_TIMESLICE);
  31. RT_ASSERT(thr != RT_NULL);
  32. return (void *)thr;
  33. }
  34. int kthread_start(void *thread)
  35. {
  36. rt_thread_t thr;
  37. rt_err_t ret;
  38. RT_ASSERT(thread != RT_NULL);
  39. thr = (rt_thread_t)thread;
  40. ret = rt_thread_startup(thr);
  41. return ret;
  42. }
  43. int kthread_stop(void *thread)
  44. {
  45. rt_thread_t thr;
  46. RT_ASSERT(thread != RT_NULL);
  47. thr = (rt_thread_t)thread;
  48. rt_thread_delete(thr);
  49. return 0;
  50. }
  51. int kthread_wakeup(void *thread)
  52. {
  53. rt_thread_t thr;
  54. rt_err_t err;
  55. RT_ASSERT(thread != RT_NULL);
  56. thr = (rt_thread_t)thread;
  57. err = rt_thread_resume(thr);
  58. if (err)
  59. {
  60. return -1;
  61. }
  62. return 0;
  63. }
  64. int kthread_suspend(void *thread)
  65. {
  66. rt_thread_t thr;
  67. rt_err_t err;
  68. RT_ASSERT(thread != RT_NULL);
  69. thr = (rt_thread_t)thread;
  70. err = rt_thread_suspend(thr);
  71. if (err)
  72. {
  73. return -1;
  74. }
  75. return 0;
  76. }