blob: 5bc0db660ff26e4cf00b00f1db7249d2b8260876 [file] [log] [blame]
/* -*- Mode: C; tab-width: 8; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#include "util.h"
int main(int argc, __attribute__((unused)) char* argv[]) {
int fd;
volatile char* p;
int count = 0;
if (argc == 1) {
test_assert(0 == mkdir("dconf", 0700));
}
fd = open("dconf/user", O_CREAT | O_RDWR, 0600);
test_assert(fd >= 0);
test_assert(0 == ftruncate(fd, 2));
size_t page_size = sysconf(_SC_PAGESIZE);
p = (char*)mmap(NULL, page_size, PROT_READ | (argc == 2 ? PROT_WRITE : 0),
MAP_SHARED, fd, 0);
test_assert(MAP_FAILED != p);
if (argc == 2) {
*p = 1;
test_assert(0 == unlink("dconf/user"));
test_assert(0 == rmdir("dconf"));
return 0;
}
atomic_puts("ready");
while (*p == 0) {
++count;
sched_yield();
}
atomic_printf("Count = %d\n", count);
atomic_puts("EXIT-SUCCESS");
return 0;
}