#include "proc/thread.h" #include #include "util/debug.h" #include "util/init.h" namespace { extern "C" void thread_entry(Thread::Entry entry, void* arg1) { entry(arg1); (void)ZThreadExit(); } } // namespace Thread::Thread(Entry e, const void* arg1) { check(ZThreadCreate(gSelfProcCap, &thread_cap_)); check(ZThreadStart(thread_cap_, reinterpret_cast(thread_entry), reinterpret_cast(e), reinterpret_cast(arg1))); } glcr::ErrorCode Thread::Join() { return static_cast(ZThreadWait(thread_cap_)); }