提交 38865066 创建 作者: Frans Kaashoek's avatar Frans Kaashoek

enable avars after initialization to avoid reporting uninteresting sharing

上级 6ac05a42
...@@ -3,18 +3,27 @@ ...@@ -3,18 +3,27 @@
#include "user.h" #include "user.h"
#include "amd64.h" #include "amd64.h"
#include "uspinlock.h" #include "uspinlock.h"
#include "mtrace.h"
#include "pthread.h" #include "pthread.h"
enum { readaccess = 0 }; enum { readaccess = 1 };
enum { verbose = 0 }; enum { verbose = 0 };
enum { npg = 1 }; enum { npg = 1 };
static pthread_barrier_t bar;
#define NITER 10 // 1000000
void* void*
thr(void *arg) thr(void *arg)
{ {
u64 tid = (u64)arg; u64 tid = (u64)arg;
for (int i = 0; i < 1000000; i++) { pthread_barrier_wait(&bar);
if (tid == 0)
mtenable_type(mtrace_record_ascope, "xv6-asharing");
for (int i = 0; i < NITER; i++) {
if (verbose && ((i % 100) == 0)) if (verbose && ((i % 100) == 0))
fprintf(1, "%d: %d ops\n", tid, i); fprintf(1, "%d: %d ops\n", tid, i);
...@@ -48,6 +57,7 @@ main(int ac, char **av) ...@@ -48,6 +57,7 @@ main(int ac, char **av)
int nthread = atoi(av[1]); int nthread = atoi(av[1]);
// fprintf(1, "mapbench[%d]: start esp %x, nthread=%d\n", getpid(), rrsp(), nthread); // fprintf(1, "mapbench[%d]: start esp %x, nthread=%d\n", getpid(), rrsp(), nthread);
pthread_barrier_init(&bar, 0, nthread);
for(u64 i = 0; i < nthread; i++) { for(u64 i = 0; i < nthread; i++) {
pthread_t tid; pthread_t tid;
...@@ -58,6 +68,8 @@ main(int ac, char **av) ...@@ -58,6 +68,8 @@ main(int ac, char **av)
for(int i = 0; i < nthread; i++) for(int i = 0; i < nthread; i++)
wait(); wait();
mtdisable("xv6-asharing");
// fprintf(1, "mapbench[%d]: done\n", getpid()); // fprintf(1, "mapbench[%d]: done\n", getpid());
// halt(); // halt();
exit(); exit();
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论