You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
687 B

2 years ago
  1. #include "zos_thread.hpp"
  2. using namespace iflytop;
  3. using namespace std;
  4. static void zosthread_default_task(void const *argument) {
  5. ZOSThread *thread = (ZOSThread *)argument;
  6. thread->__callfunc();
  7. }
  8. void ZOSThread::init(const char *threadname, int stack_size, osPriority priority) {
  9. _stack_size = stack_size;
  10. _priority = priority;
  11. _threadname = threadname;
  12. }
  13. void ZOSThread::run(function<void()> func) {
  14. _func = func;
  15. osThreadDef(zosthread_default_task, zosthread_default_task, _priority, 0, _stack_size);
  16. _defaultTaskHandle = osThreadCreate(osThread(zosthread_default_task), this);
  17. ZASSERT(_defaultTaskHandle != NULL);
  18. }
  19. void ZOSThread::__callfunc() { _func(); }