sewardj | 3b29048 | 2011-05-06 21:02:55 +0000 | [diff] [blame] | 1 | #include <stdlib.h> |
2 | #include <stdio.h> | ||||
3 | #include <errno.h> | ||||
bart | 667c677 | 2011-05-08 09:29:06 +0000 | [diff] [blame] | 4 | #include <unistd.h> |
5 | #include <sys/wait.h> | ||||
bart | 667c677 | 2011-05-08 09:29:06 +0000 | [diff] [blame] | 6 | int main() |
sewardj | 3b29048 | 2011-05-06 21:02:55 +0000 | [diff] [blame] | 7 | { |
bart | 95d1248 | 2011-05-08 10:10:04 +0000 | [diff] [blame] | 8 | int mem = 0, pid; |
sewardj | 3b29048 | 2011-05-06 21:02:55 +0000 | [diff] [blame] | 9 | pid = fork(); |
10 | if (pid == -1) { | ||||
11 | mem = 1; | ||||
12 | perror("fork"); | ||||
13 | exit(1); | ||||
14 | } | ||||
15 | |||||
16 | if (pid == 0) { | ||||
sewardj | 45fa417 | 2011-06-26 09:13:27 +0000 | [diff] [blame] | 17 | int burn; |
18 | for (burn = 0; burn < 100000; burn++) /* burncpu */__asm__ __volatile("":::"memory") ; | ||||
sewardj | 3b29048 | 2011-05-06 21:02:55 +0000 | [diff] [blame] | 19 | if (mem == 0) |
20 | exit(0); | ||||
21 | else | ||||
22 | exit(1); | ||||
23 | } else { | ||||
24 | int ret; | ||||
25 | int status; | ||||
26 | while((ret = waitpid(pid, &status, 0)) != pid) { | ||||
27 | if (errno != EINTR) { | ||||
28 | perror("waitpid"); | ||||
29 | exit(1); | ||||
30 | } | ||||
31 | } | ||||
32 | mem = status; | ||||
33 | } | ||||
34 | if (mem == 0) | ||||
35 | printf("mem is zero\n"); | ||||
bart | 667c677 | 2011-05-08 09:29:06 +0000 | [diff] [blame] | 36 | |
37 | return 0; | ||||
sewardj | 3b29048 | 2011-05-06 21:02:55 +0000 | [diff] [blame] | 38 | } |