#ifndef THREAD_H #define THREAD_H #include #define noreturn_t __attribute__((noreturn)) void template class BaseThread { private: WORKING_AREA(stack_space, stack_size); static inline noreturn_t thread_main_wrap(void* arg) { ((Child*)arg)->thread_main(); } public: void start(tprio_t priority = NORMALPRIO) { chThdCreateStatic(stack_space, sizeof(stack_space), priority, (tfunc_t)thread_main_wrap, this); } }; #endif