added base src
[xv6-db.git] / forktest.c
blobbb286e657ff6cacf0fd7b22748438db7b9a30dca
1 // Test that fork fails gracefully.
2 // Tiny executable so that the limit can be filling the proc table.
4 #include "types.h"
5 #include "stat.h"
6 #include "user.h"
8 #define N 1000
10 void
11 printf(int fd, char *s, ...)
13 write(fd, s, strlen(s));
16 void
17 forktest(void)
19 int n, pid;
21 printf(1, "fork test\n");
23 for(n=0; n<N; n++){
24 pid = fork();
25 if(pid < 0)
26 break;
27 if(pid == 0)
28 exit();
31 if(n == N){
32 printf(1, "fork claimed to work N times!\n", N);
33 exit();
36 for(; n > 0; n--){
37 if(wait() < 0){
38 printf(1, "wait stopped early\n");
39 exit();
43 if(wait() != -1){
44 printf(1, "wait got too many\n");
45 exit();
48 printf(1, "fork test OK\n");
51 int
52 main(void)
54 forktest();
55 exit();