C · 494 bytes Raw Blame History
1 #include <stdatomic.h>
2
3 _Atomic unsigned char g8;
4 _Atomic unsigned short g16;
5
6 unsigned char max8(unsigned char x) {
7 return __c11_atomic_fetch_max(&g8, x, __ATOMIC_ACQ_REL);
8 }
9
10 unsigned char min8(unsigned char x) {
11 return __c11_atomic_fetch_min(&g8, x, __ATOMIC_ACQ_REL);
12 }
13
14 unsigned short max16(unsigned short x) {
15 return __c11_atomic_fetch_max(&g16, x, __ATOMIC_ACQ_REL);
16 }
17
18 unsigned short min16(unsigned short x) {
19 return __c11_atomic_fetch_min(&g16, x, __ATOMIC_ACQ_REL);
20 }