projects
/
pintos-anon
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix compile problems.
[pintos-anon]
/
src
/
tests
/
threads
/
p1-4.c
diff --git
a/src/tests/threads/p1-4.c
b/src/tests/threads/p1-4.c
index 1ec2b82e52824a1c075a77ce7eb17d1e0558388f..9d66a6f991b695033476542c94279f4bd7412fe9 100644
(file)
--- a/
src/tests/threads/p1-4.c
+++ b/
src/tests/threads/p1-4.c
@@
-4,7
+4,8
@@
Run this test with and without the MLFQS enabled. The
threads' reported test should be better with MLFQS on than
Run this test with and without the MLFQS enabled. The
threads' reported test should be better with MLFQS on than
- with it off.
+ with it off. You may have to tune the loop counts to get
+ reasonable numbers.
Based on a test originally submitted for Stanford's CS 140 in
winter 1999 by by Matt Franklin
Based on a test originally submitted for Stanford's CS 140 in
winter 1999 by by Matt Franklin
@@
-17,8
+18,10
@@
#include "threads/test.h"
#include <stdio.h>
#include "threads/test.h"
#include <stdio.h>
+#include <inttypes.h>
#include "threads/synch.h"
#include "threads/thread.h"
#include "threads/synch.h"
#include "threads/thread.h"
+#include "devices/timer.h"
static thread_func io_thread;
static thread_func cpu_thread;
static thread_func io_thread;
static thread_func cpu_thread;
@@
-27,10
+30,11
@@
static thread_func io_cpu_thread;
void
test (void)
{
void
test (void)
{
- static
const
thread_func *funcs[] = {io_thread, cpu_thread, io_cpu_thread};
+ static thread_func *funcs[] = {io_thread, cpu_thread, io_cpu_thread};
static const char *names[] = {"IO", "CPU", "IO & CPU"};
struct semaphore done[3];
tid_t tids[3];
static const char *names[] = {"IO", "CPU", "IO & CPU"};
struct semaphore done[3];
tid_t tids[3];
+ int i;
printf ("\n"
"Testing multilevel feedback queue scheduler.\n");
printf ("\n"
"Testing multilevel feedback queue scheduler.\n");
@@
-38,7
+42,7
@@
test (void)
/* Start threads. */
for (i = 0; i < 3; i++)
{
/* Start threads. */
for (i = 0; i < 3; i++)
{
- sema_init (&done[i], 0);
+ sema_init (&done[i], 0
, names[i]
);
tids[i] = thread_create (names[i], PRI_DEFAULT, funcs[i], &done[i]);
}
tids[i] = thread_create (names[i], PRI_DEFAULT, funcs[i], &done[i]);
}
@@
-73,7
+77,7
@@
cpu_thread (void *sema_)
lock_release (&lock);
}
lock_release (&lock);
}
- printf ("CPU bound thread finished in %"PRI
64d
" ticks.\n",
+ printf ("CPU bound thread finished in %"PRI
d64
" ticks.\n",
timer_elapsed (start));
sema_up (sema);
timer_elapsed (start));
sema_up (sema);
@@
-94,7
+98,7
@@
io_thread (void *sema_)
#endif
}
#endif
}
- printf ("IO bound thread finished in %"PRI
64d
" ticks.\n",
+ printf ("IO bound thread finished in %"PRI
d64
" ticks.\n",
timer_elapsed (start));
sema_up (sema);
timer_elapsed (start));
sema_up (sema);
@@
-126,7
+130,7
@@
io_cpu_thread (void *sema_)
}
}
}
}
- printf ("Alternating IO/CPU thread finished in %"PRI
64d
" ticks.\n",
+ printf ("Alternating IO/CPU thread finished in %"PRI
d64
" ticks.\n",
timer_elapsed (start));
sema_up (sema);
timer_elapsed (start));
sema_up (sema);