Path: blob/main/test/core/pthread/emscripten_atomics.c
4154 views
#include <assert.h>1#include <emscripten/threading.h>2#include <stdio.h>3#include <stdint.h>4#include <string.h>56#define OLD 4278int main() {9uint8_t buffer[16];10memset(&buffer[0], OLD, sizeof(buffer));1112uint8_t o8 = emscripten_atomic_exchange_u8(&buffer[0], 0x12);13assert(o8 == OLD);14assert(buffer[0] == 0x12);15assert(buffer[1] == OLD);1617uint16_t o16 = emscripten_atomic_exchange_u16(&buffer[0], 0x3456);18assert((o16 & 0xff) == 0x12);19assert((o16 >> 8) == OLD);20assert(buffer[0] == 0x56);21assert(buffer[1] == 0x34);22assert(buffer[2] == OLD);2324uint32_t o32 = emscripten_atomic_exchange_u32(&buffer[0], 0xabcdef91);25assert((o32 & 0xff) == 0x56);26assert(((o32 >> 8) & 0xff) == 0x34);27assert(((o32 >> 16) & 0xff) == OLD);28assert(((o32 >> 24) & 0xff) == OLD);29assert(buffer[0] == 0x91);30assert(buffer[1] == 0xef);31assert(buffer[2] == 0xcd);32assert(buffer[3] == 0xab);33assert(buffer[4] == OLD);3435printf("OK\n");36}37383940