dius 0.1.0
Loading...
Searching...
No Matches
platform_thread.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/function/container/function.h"
4#include "dius/error.h"
6#include "dius/runtime/tls.h"
7
8namespace dius {
9struct PlatformThread;
11
12struct PlatformThread : di::SelfPointer<PlatformThread> {
13 static auto create(runtime::TlsInfo) -> di::Result<di::Box<PlatformThread, PlatformThreadDeleter>>;
14 static auto current() -> PlatformThread&;
15
16 PlatformThread() = default;
17
18 auto id() const -> int { return thread_id; }
19 auto join() -> di::Result<void>;
20
21 auto thread_local_storage(usize tls_size) -> di::Span<byte> {
22 return { reinterpret_cast<byte*>(this) - tls_size, tls_size };
23 }
24
25 int thread_id { 0 };
26 di::Function<void()> entry;
28};
29
33
34auto spawn_thread(PlatformThread&) -> di::Result<void>;
35}
Definition memory_region.h:6
Definition directory_entry.h:11
auto spawn_thread(PlatformThread &) -> di::Result< void >
Definition platform_thread.h:30
void operator()(PlatformThread *) const
Definition platform_thread.h:10
auto thread_local_storage(usize tls_size) -> di::Span< byte >
Definition platform_thread.h:21
PlatformThread()=default
di::Function< void()> entry
Definition platform_thread.h:15
auto join() -> di::Result< void >
static auto create(runtime::TlsInfo) -> di::Result< di::Box< PlatformThread, PlatformThreadDeleter > >
MemoryRegion stack
Definition platform_thread.h:27
int thread_id
Definition platform_thread.h:25
auto id() const -> int
Definition platform_thread.h:18
static auto current() -> PlatformThread &
Definition tls.h:6