acadia/lib/mammoth/proc/thread.cpp

28 lines
614 B
C++
Raw Normal View History

#include "proc/thread.h"
2023-06-06 17:12:08 -07:00
#include <zcall.h>
#include "util/debug.h"
#include "util/init.h"
2023-06-07 00:25:04 -07:00
namespace {
extern "C" void thread_entry(Thread::Entry entry, void* arg1) {
entry(arg1);
2023-06-22 02:17:50 -07:00
(void)ZThreadExit();
}
} // namespace
Thread::Thread(Entry e, const void* arg1) {
check(ZThreadCreate(gSelfProcCap, &thread_cap_));
2023-06-07 00:25:04 -07:00
check(ZThreadStart(thread_cap_, reinterpret_cast<uint64_t>(thread_entry),
reinterpret_cast<uint64_t>(e),
reinterpret_cast<uint64_t>(arg1)));
}
2023-06-22 02:17:50 -07:00
glcr::ErrorCode Thread::Join() {
return static_cast<glcr::ErrorCode>(ZThreadWait(thread_cap_));
}