forked from OSchip/llvm-project
26 lines
490 B
C
26 lines
490 B
C
|
#include <pthread.h>
|
||
|
#include <string.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <stdio.h>
|
||
|
#include <unistd.h>
|
||
|
|
||
|
void *volatile mem;
|
||
|
volatile int len;
|
||
|
|
||
|
void *Thread(void *p) {
|
||
|
while ((p = __atomic_load_n(&mem, __ATOMIC_ACQUIRE)) == 0)
|
||
|
usleep(100);
|
||
|
memset(p, 0, len);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
extern "C" void libfunc() {
|
||
|
pthread_t t;
|
||
|
pthread_create(&t, 0, Thread, 0);
|
||
|
len = 10;
|
||
|
__atomic_store_n(&mem, malloc(len), __ATOMIC_RELEASE);
|
||
|
pthread_join(t, 0);
|
||
|
free(mem);
|
||
|
fprintf(stderr, "OK\n");
|
||
|
}
|