3 #include "libinterface.h"
10 static void a(void *obj)
12 MCID mr1=MC2_nextOpLoad(MCID_NODEP);
14 MC2_nextOpStore(MCID_NODEP, mr1);
17 MC2_nextOpStore(MCID_NODEP, mr1);
22 static void b(void *obj)
24 MCID mr2=MC2_nextOpLoad(MCID_NODEP);
26 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
29 MC2_nextOpStore(MCID_NODEP, mr2);
34 int user_main(int argc, char **argv)
38 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
40 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
43 printf("Main thread: creating 2 threads\n");
44 MC2_nextOpThrd_create(MCID_NODEP, MCID_NODEP);
45 thrd_create(&t1, (thrd_start_t)&a, NULL);
46 MC2_nextOpThrd_create(MCID_NODEP, MCID_NODEP);
47 thrd_create(&t2, (thrd_start_t)&b, NULL);
49 MC2_nextOpThrd_join(MCID_NODEP);
51 MC2_nextOpThrd_join(MCID_NODEP);
53 printf("Main thread is finished\n");
54 MCID mlgr1=MC2_nextOpLoad(MCID_NODEP);
55 int lgr1=load_32(&gr1);
57 MCID mlgr2=MC2_nextOpLoad(MCID_NODEP);
58 int lgr2=load_32(&gr2);
59 printf("lrg1=%d lrg2=%d\n", lgr1, lgr2);
62 br1=MC2_branchUsesID(mlgr1, 1, 2, true);
64 br2=MC2_branchUsesID(mlgr2, 1, 2, true);
66 br2=MC2_branchUsesID(mlgr2, 0, 2, true);
70 br1=MC2_branchUsesID(mlgr1, 0, 2, true);