5 #include "libinterface.h"
12 static void a(void *obj)
14 MCID mr1=MC2_nextOpLoad(MCID_NODEP);
18 br1=MC2_branchUsesID(mr1, 1, 2, true);
20 mr1=MC2_function(0, 4, r1);
22 br1=MC2_branchUsesID(mr1, 0, 2, true);
24 mr1=MC2_function(0, 4, r1);
29 MC2_nextOpStore(MCID_NODEP, mr1);
32 MC2_nextOpStore(MCID_NODEP, mr1);
37 static void b(void *obj)
39 MCID mr2=MC2_nextOpLoad(MCID_NODEP);
41 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
44 MC2_nextOpStore(MCID_NODEP, mr2);
49 int user_main(int argc, char **argv)
53 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
55 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
58 printf("Main thread: creating 2 threads\n");
59 MC2_nextOpThrd_create(MCID_NODEP, MCID_NODEP);
60 thrd_create(&t1, (thrd_start_t)&a, NULL);
61 MC2_nextOpThrd_create(MCID_NODEP, MCID_NODEP);
62 thrd_create(&t2, (thrd_start_t)&b, NULL);
64 MC2_nextOpThrd_join(MCID_NODEP);
66 MC2_nextOpThrd_join(MCID_NODEP);
68 printf("Main thread is finished\n");
69 MCID mr1=MC2_nextOpLoad(MCID_NODEP);
70 int lgr1=load_32(&gr1);
72 MCID mr2=MC2_nextOpLoad(MCID_NODEP);
73 int lgr2=load_32(&gr2);
76 br1=MC2_branchUsesID(mr1, 1, 2, true);
78 br2=MC2_branchUsesID(mr2, 1, 2, true);
80 br2=MC2_branchUsesID(mr2, 0, 2, true);
84 br1=MC2_branchUsesID(mr1, 0, 2, true);