4 #include "libinterface.h"
11 static void a(void *obj)
13 MCID mr1=MC2_nextOpLoad(MCID_NODEP);
15 MC2_nextOpStore(MCID_NODEP, mr1);
18 MC2_nextOpStore(MCID_NODEP, mr1);
23 static void b(void *obj)
25 MCID mr2=MC2_nextOpLoad(MCID_NODEP);
27 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
30 MC2_nextOpStore(MCID_NODEP, mr2);
35 int user_main(int argc, char **argv)
39 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
41 MC2_nextOpStore(MCID_NODEP, MCID_NODEP);
44 printf("Main thread: creating 2 threads\n");
45 MC2_nextOpThrd_create(MCID_NODEP, MCID_NODEP);
46 thrd_create(&t1, (thrd_start_t)&a, NULL);
47 MC2_nextOpThrd_create(MCID_NODEP, MCID_NODEP);
48 thrd_create(&t2, (thrd_start_t)&b, NULL);
50 MC2_nextOpThrd_join(MCID_NODEP);
52 MC2_nextOpThrd_join(MCID_NODEP);
54 printf("Main thread is finished\n");
55 MCID mlgr1=MC2_nextOpLoad(MCID_NODEP);
56 int lgr1=load_32(&gr1);
58 MCID mlgr2=MC2_nextOpLoad(MCID_NODEP);
59 int lgr2=load_32(&gr2);
60 printf("lrg1=%d lrg2=%d\n", lgr1, lgr2);
63 br1=MC2_branchUsesID(mlgr1, 1, 2, true);
65 br2=MC2_branchUsesID(mlgr2, 1, 2, true);
67 br2=MC2_branchUsesID(mlgr2, 0, 2, true);
71 br1=MC2_branchUsesID(mlgr1, 0, 2, true);