4 #include "libinterface.h"
11 static void a(void *obj)
13 MCID mr1=MC2_nextOpLoad(MCID_NODEP);
17 br1=MC2_branchUsesID(mr1, 1, 2, true);
19 mr1=MC2_function(0, 4, r1);
21 br1=MC2_branchUsesID(mr1, 0, 2, true);
23 mr1=MC2_function(0, 4, r1);
28 MC2_nextOpStore(MCID_NODEP, mr1);
31 MC2_nextOpStore(MCID_NODEP, mr1);
36 static void b(void *obj)
38 MCID mr2=MC2_nextOpLoad(MCID_NODEP);
40 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
43 MC2_nextOpStore(MCID_NODEP, mr2);
48 int user_main(int argc, char **argv)
52 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
54 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
57 printf("Main thread: creating 2 threads\n");
58 MC2_nextOpThrd_create(MCID_NODEP, MCID_NODEP);
59 thrd_create(&t1, (thrd_start_t)&a, NULL);
60 MC2_nextOpThrd_create(MCID_NODEP, MCID_NODEP);
61 thrd_create(&t2, (thrd_start_t)&b, NULL);
63 MC2_nextOpThrd_join(MCID_NODEP);
65 MC2_nextOpThrd_join(MCID_NODEP);
67 printf("Main thread is finished\n");
68 MCID mr1=MC2_nextOpLoad(MCID_NODEP);
69 int lgr1=load_32(&gr1);
71 MCID mr2=MC2_nextOpLoad(MCID_NODEP);
72 int lgr2=load_32(&gr2);
75 br1=MC2_branchUsesID(mr1, 1, 2, true);
77 br2=MC2_branchUsesID(mr2, 1, 2, true);
79 br2=MC2_branchUsesID(mr2, 0, 2, true);
83 br1=MC2_branchUsesID(mr1, 0, 2, true);