mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-01 03:53:33 +00:00
45a7435788
* Exponential back-off * Removed "native" specifier * Abstract away Futex for cthread * Complete setup for TLS (including main thread)
33 lines
715 B
C
33 lines
715 B
C
#ifndef COSMOPOLITAN_LIBC_THREAD_DESCRIPTOR_H_
|
|
#define COSMOPOLITAN_LIBC_THREAD_DESCRIPTOR_H_
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
COSMOPOLITAN_C_START_
|
|
|
|
/**
|
|
* @fileoverview thread types
|
|
*/
|
|
|
|
enum cthread_state {
|
|
cthread_started = 0,
|
|
cthread_joining = 1,
|
|
cthread_finished = 2,
|
|
cthread_detached = 4,
|
|
cthread_main = 127,
|
|
};
|
|
|
|
struct cthread_descriptor_t {
|
|
struct cthread_descriptor_t* self; /* mandatory for TLS */
|
|
struct {
|
|
void *top, *bottom;
|
|
} stack, tls, alloc;
|
|
int state;
|
|
int tid;
|
|
int rc;
|
|
void* pthread_ret_ptr;
|
|
};
|
|
|
|
typedef struct cthread_descriptor_t* cthread_t;
|
|
|
|
COSMOPOLITAN_C_END_
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_THREAD_DESCRIPTOR_H_ */
|