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.

24 lines
712 B

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