Remove old testsuite
[dyninst.git] / testsuite / src / dyninst / test_fork_11_mutatee.c
1 #include <sys/types.h>
2 #include <unistd.h>
3
4 #include "mutatee_util.h"
5
6 /* Externally accessed function prototypes.  These must have globally unique
7  * names.  I suggest following the pattern <testname>_<function>
8  */
9
10 void test_fork_11_func1();
11
12 /* Global variables accessed by the mutator.  These must have globally unique
13  * names.
14  */
15
16 int test_fork_11_global1 = 1;
17
18 /* Internally used function prototypes.  These should be declared with the
19  * keyword static so they don't interfere with other mutatees in the group.
20  */
21
22 /* Global variables used internally by the mutatee.  These should be declared
23  * with the keyword static so they don't interfere with other mutatees in the
24  * group.
25  */
26
27 static int dummyVal = 0;
28
29 /* Function definitions follow */
30
31 void test_fork_11_func1() { 
32   dummyVal += 10;
33 }
34
35 int test_fork_11_mutatee() {
36 #if defined(i386_unknown_nt4_0_test)
37   return 0;
38 #endif
39   int pid;
40   /* dprintf("mutatee:  starting fork\n"); */
41   pid = fork();
42   /* dprintf("mutatee:  stopping fork\n"); */
43
44   /* mutatee will get paused here, temporarily, when the mutator receives
45      the postForkCallback */
46
47   if (pid == 0) {   /* child */
48     dprintf("Child: starting tests\n");
49     test_fork_11_func1();
50     dprintf("Child: done with tests, exiting\n");
51   } else if(pid > 0) {
52     registerPID(pid); /* Register for cleanup */
53     dprintf("Parent: starting tests\n");
54     test_fork_11_func1();
55     dprintf("Parent: done with tests, exiting\n");
56   } else if(pid < 0) {
57     logerror("error on fork\n");
58     return -1;  /* error case */
59   }
60
61   return 0; /* Return code for this mutatee is not checked */
62 }