X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=markers-test%2Ftest-mark-speed-opt.c;h=bc606a10ad3c1685ad977663639a1c19735f6f1a;hb=fade4071bfc7dcaebaad3e7f502c62a152f659a9;hp=231285d14cc17cbb306a1e8b7d478dbe9c149347;hpb=2e577577a1e69ecf9ab6634c531c72e1a10c52d9;p=lttv.git diff --git a/markers-test/test-mark-speed-opt.c b/markers-test/test-mark-speed-opt.c index 231285d1..bc606a10 100644 --- a/markers-test/test-mark-speed-opt.c +++ b/markers-test/test-mark-speed-opt.c @@ -12,6 +12,7 @@ static void pmc_flush_cache(void) { + register int i; /* write back and invalidate cache (a serializing instruction) */ __asm__ __volatile__ ( "wbinvd" : : : "memory" ); @@ -26,7 +27,9 @@ static void pmc_flush_cache(void) * Does wbinvd also cause the TLB to be flushed? * A comment in mtrr.c suggests that it does. */ - { register int i; for (i = 0; i < 512*1024; i++) { } } + for (i = 0; i < 512*1024; i++) { + cpu_relax(); + } } @@ -71,14 +74,12 @@ static void noinline test2(const struct marker *mdata, struct proc_dir_entry *pentry = NULL; -char temp0[8192]; -int temp[8192] __cacheline_aligned; -char temp5[8192]; - static inline void test(unsigned long arg, unsigned long arg2) { + volatile int temp[5]; #ifdef CACHEFLUSH - pmc_flush_cache(); + clflush(¤t->pid); + //pmc_flush_cache(); #endif temp[2] = (temp[0] + 60) << 10; temp[3] = (temp[2] + 60) << 10; @@ -99,8 +100,8 @@ static int my_open(struct inode *inode, struct file *file) local_irq_save(flags); #ifdef CACHEFLUSH - pmc_flush_cache(); /* initial write back, without cycle count */ - msleep(20); /* wait for L2 flush */ + //pmc_flush_cache(); /* initial write back, without cycle count */ + //msleep(20); /* wait for L2 flush */ #endif rdtsc_barrier(); cycles1 = get_cycles();