Rename newtestsuite to testsuite
[dyninst.git] / testsuite / src / dyninst / test_thread_5_mutatee.c
1 #include <assert.h>
2
3 #include "mutatee_util.h"
4 #include "test_thread.h"
5 #include "test12.h"
6
7 /* Externally accessed function prototypes.  These must have globally unique
8  * names.  I suggest following the pattern <testname>_<function>
9  */
10
11 /* Global variables accessed by the mutator.  These must have globally unique
12  * names.
13  */
14
15 volatile int test_thread_5_idle = 0;
16
17 /* Internally used function prototypes.  These should be declared with the
18  * keyword static so they don't interfere with other mutatees in the group.
19  */
20
21 /* Global variables used internally by the mutatee.  These should be declared
22  * with the keyword static so they don't interfere with other mutatees in the
23  * group.
24  */
25
26 /* Function definitions follow */
27
28 void *thread_main8(void *arg)
29 {
30   /*  The mutator will patch in messaging primitives to signal events at mutex creation,
31       deletion, locking and unlocking.  Thus far, we are only considering reporting of events
32       so actual contention is meaningless */
33   Lock_t newmutex;
34   arg = NULL;
35   if (!createLock(&newmutex)) {
36      logerror("%s[%d]:  createLock failed\n", __FILE__, __LINE__);
37      return NULL;
38   }
39   sleep_ms(100);
40   if (!lockLock(&newmutex)) {
41      logerror("%s[%d]:  lockLock failed\n", __FILE__, __LINE__);
42      return NULL;
43   }
44   sleep_ms(100);
45   if (!unlockLock(&newmutex)) {
46      logerror("%s[%d]:  unlockLock failed\n", __FILE__, __LINE__);
47      return NULL;
48   }
49   sleep_ms(100); 
50   if (!destroyLock(&newmutex)) {
51      logerror("%s[%d]:  destroyLock failed\n", __FILE__, __LINE__);
52      return NULL;
53   }
54
55   sleep(1);
56   return NULL;
57 }
58
59 Thread_t test8threads[TEST8_THREADS];
60 void func8_1()
61 {
62   Thread_t *threads = test8threads;
63
64   threads = createThreads(TEST8_THREADS, thread_main8,threads);
65   assert (threads);
66
67   while (test_thread_5_idle == 0) {
68     /* Do nothing */
69   }
70 }
71
72 int test_thread_5_mutatee() {
73   func8_1();
74   return 0; /* Return code is not checked */
75 }