Mercurial > hg > Members > mitsuki > xv6_rpi2_port
view uprogs/stressfs.c @ 0:ed10291ff195
first commit
author | mir3636 |
---|---|
date | Sun, 06 Jan 2019 19:27:03 +0900 |
parents | |
children |
line wrap: on
line source
// Demonstrate that moving the "acquire" in iderw after the loop that // appends to the idequeue results in a race. // For this to work, you should also add a spin within iderw's // idequeue traversal loop. Adding the following demonstrated a panic // after about 5 runs of stressfs in QEMU on a 2.1GHz CPU: // for (i = 0; i < 40000; i++) // asm volatile(""); #include "types.h" #include "stat.h" #include "user.h" #include "fs.h" #include "fcntl.h" int main(int argc, char *argv[]) { int fd, i; char path[] = "stressfs0"; char data[512]; printf(1, "stressfs starting\n"); memset(data, 'a', sizeof(data)); for(i = 0; i < 4; i++) if(fork() > 0) break; printf(1, "write %d\n", i); path[8] += i; fd = open(path, O_CREATE | O_RDWR); for(i = 0; i < 20; i++) // printf(fd, "%d\n", i); write(fd, data, sizeof(data)); close(fd); printf(1, "read\n"); fd = open(path, O_RDONLY); for (i = 0; i < 20; i++) read(fd, data, sizeof(data)); close(fd); wait(); exit(); }