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