v / vlib / goroutines / goroutines_tls.h
21 lines · 16 sloc · 883 bytes · e21acca549c0df34c98beb389088dbf7cee4c4d0
Raw
1#ifndef GOROUTINES_TLS_H
2#define GOROUTINES_TLS_H
3
4#include <stdint.h>
5
6void *goroutines_get_current_m(void);
7void goroutines_set_current_m(void *mp);
8
9uint32_t goroutines_atomic_load_u32(volatile uint32_t *ptr);
10void goroutines_atomic_store_u32(volatile uint32_t *ptr, uint32_t val);
11uint32_t goroutines_atomic_fetch_add_u32(volatile uint32_t *ptr, uint32_t val);
12int32_t goroutines_atomic_fetch_add_i32(volatile int32_t *ptr, int32_t val);
13int32_t goroutines_atomic_fetch_sub_i32(volatile int32_t *ptr, int32_t val);
14uint64_t goroutines_atomic_fetch_add_u64(volatile uint64_t *ptr, uint64_t val);
15int goroutines_atomic_cas_u32(volatile uint32_t *ptr, uint32_t *expected, uint32_t desired);
16int goroutines_atomic_cas_ptr(void *volatile *ptr, void **expected, void *desired);
17
18void grt_spinlock_lock(volatile int32_t *lock);
19void grt_spinlock_unlock(volatile int32_t *lock);
20
21#endif
22