#ifndef SYSROOT_THREADS_H_
#define SYSROOT_THREADS_H_

#include <features.h>
#include <time.h>

#ifdef __cplusplus
extern "C" {
typedef unsigned long thrd_t;
#else
typedef struct __pthread* thrd_t;
#define thread_local _Thread_local
#endif

typedef unsigned tss_t;
typedef int (*thrd_start_t)(void*);
typedef void (*tss_dtor_t)(void*);

#define __NEED_cnd_t
#define __NEED_mtx_t
#define __NEED_once_flag

#include <bits/alltypes.h>

#define TSS_DTOR_ITERATIONS 4

enum {
  thrd_success = 0,
  thrd_busy = 1,
  thrd_error = 2,
  thrd_nomem = 3,
  thrd_timedout = 4,
};

// These are bitfield values; initialize with e.g. (mtx_plain|mtx_timed).
// mtx_recursive is not implemented.
enum {
  mtx_plain = 0,
  mtx_recursive = 1,
  mtx_timed = 2,
};

#ifdef _ALL_SOURCE
#define MTX_INIT \
  {}
#define CND_INIT \
  {}
#endif

#define ONCE_FLAG_INIT 0

int thrd_create(thrd_t*, thrd_start_t, void*);
#ifdef _ALL_SOURCE
// |name| is silently truncated to a maximum of ZX_MAX_NAME_LEN-1 characters.
int thrd_create_with_name(thrd_t*, thrd_start_t, void*, const char* name);
#endif
_Noreturn void thrd_exit(int);

int thrd_detach(thrd_t);
int thrd_join(thrd_t, int*);

int thrd_sleep(const struct timespec*, struct timespec*);
void thrd_yield(void);

thrd_t thrd_current(void);
int thrd_equal(thrd_t, thrd_t);
#ifndef __cplusplus
#define thrd_equal(A, B) ((A) == (B))
#endif

void call_once(once_flag*, void (*)(void));

int mtx_init(mtx_t*, int);
void mtx_destroy(mtx_t*);

int mtx_lock(mtx_t* __m)
#ifdef __clang__
    __attribute__((__acquire_capability__(__m)))
#endif
    ;
int mtx_timedlock(mtx_t* __restrict, const struct timespec* __restrict);
int mtx_trylock(mtx_t*);
int mtx_unlock(mtx_t* __m)
#ifdef __clang__
    __attribute__((__release_capability__(__m)))
#endif
    ;

int cnd_init(cnd_t*);
void cnd_destroy(cnd_t*);

int cnd_broadcast(cnd_t*);
int cnd_signal(cnd_t*);

int cnd_timedwait(cnd_t* __restrict, mtx_t* __restrict, const struct timespec* __restrict);
int cnd_wait(cnd_t*, mtx_t*);

int tss_create(tss_t*, tss_dtor_t);
void tss_delete(tss_t key);

int tss_set(tss_t, void*);
void* tss_get(tss_t);

#ifdef __cplusplus
}
#endif

#endif  // SYSROOT_THREADS_H_
