3 #define NUM_PROCESSORS 12
17 unsigned backoff_base;
19 unsigned backoff_addend;
21 unsigned backoff_base_bits = 0;
22 unsigned backoff_cap_bits = 0;
25 unsigned iterations = 1;
26 unsigned initial_nodes = 0;
27 unsigned repetitions = 1;
28 unsigned backoff_shift_bits = 0;
35 ussetlock(native_lock);
40 usunsetlock(native_lock);
43 void tts_acq(unsigned* plock)
47 backoff = backoff_base;
52 } while (tas(plock) == 1);
68 barrier(Barrier, procs*multi);
73 for(i=0;i<iterations;i++) {
76 for(j=0; j<work;) j++;
78 for(j=0; j<work;) j++;
81 barrier(Barrier, procs*multi);
85 printf("p%d m%d i%d b%d c%d s%d w%d time %.0f ms.\n",
86 procs, multi, iterations*procs*multi,
87 backoff_base_bits, backoff_cap_bits,
88 backoff_shift_bits, work, ((t2-t1)*1000)/(double)HZ);
98 processor = (pid/multi)+1;
99 processor %= NUM_PROCESSORS;
100 if(sysmp(MP_MUSTRUN, processor) == -1) { perror("Could not MUSTRUN"); }
102 printf("--- %s\n", name);
105 for (i=0; i<repetitions; i++) {
112 shmid = shmget(IPC_PRIVATE, sizeof(shared_mem_t), 511);
114 smp = (shared_mem_t *)shmat(shmid, 0, 0);
115 assert((int)smp != -1);
118 void my_m_fork(void (*func)(), int num_procs)
120 for (pid=1;pid<num_procs;pid++) {
121 if(fork()==0) /* Child */ {
122 (*func)(); /* Call the program */
127 (*func)(); /* Call the program */
130 main(int argc,char **argv)
132 parse_args(argc, argv);
134 iterations = (iterations + ((procs*multi)>>1))/(procs*multi);
136 Handle = usinit("/tmp/foo_barrier");
137 Barrier = new_barrier(Handle);
138 init_barrier(Barrier);
139 lock_handle = usinit("/tmp/foo_lock");
140 native_lock = usnewlock(lock_handle);
141 my_m_fork(main_task, procs*multi);
142 shmctl(shmid, IPC_RMID, smp);