summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2019-10-03 15:09:31 -0400
committerRobert Morris <[email protected]>2019-10-03 15:09:31 -0400
commita52d296814d869f16ced4fb68246223b4a64fa38 (patch)
treea82eddf83f1a278ae2bdfa378826308663d55ce3 /user
parent56583b1402a7f8fad0f8c3c296e26f12b1114c95 (diff)
downloadxv6-labs-a52d296814d869f16ced4fb68246223b4a64fa38.tar.gz
xv6-labs-a52d296814d869f16ced4fb68246223b4a64fa38.tar.bz2
xv6-labs-a52d296814d869f16ced4fb68246223b4a64fa38.zip
delete alarmtest from riscv
Diffstat (limited to 'user')
-rw-r--r--user/alarmtest.c106
1 files changed, 0 insertions, 106 deletions
diff --git a/user/alarmtest.c b/user/alarmtest.c
deleted file mode 100644
index d3746c4..0000000
--- a/user/alarmtest.c
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// test program for the alarm lab.
-// you can modify this file for testing,
-// but please make sure your kernel
-// modifications pass the original
-// versions of these tests.
-//
-
-#include "kernel/param.h"
-#include "kernel/types.h"
-#include "kernel/stat.h"
-#include "kernel/riscv.h"
-#include "user/user.h"
-
-void test0();
-void test1();
-void periodic();
-
-int
-main(int argc, char *argv[])
-{
- test0();
- test1();
- exit(0);
-}
-
-volatile static int count;
-
-void
-periodic()
-{
- count = count + 1;
- printf("alarm!\n");
- sigreturn();
-}
-
-// tests whether the kernel calls
-// the alarm handler even a single time.
-void
-test0()
-{
- int i;
- printf("test0 start\n");
- count = 0;
- sigalarm(2, periodic);
- for(i = 0; i < 1000*500000; i++){
- if((i % 1000000) == 0)
- write(2, ".", 1);
- if(count > 0)
- break;
- }
- sigalarm(0, 0);
- if(count > 0){
- printf("test0 passed\n");
- } else {
- printf("\ntest0 failed: the kernel never called the alarm handler\n");
- }
-}
-
-void __attribute__ ((noinline)) foo(int i, int *j) {
- if((i % 2500000) == 0) {
- write(2, ".", 1);
- }
- *j += 1;
-}
-
-//
-// tests that the kernel calls the handler multiple times.
-//
-// tests that, when the handler returns, it returns to
-// the point in the program where the timer interrupt
-// occurred, with all registers holding the same values they
-// held when the interrupt occurred.
-//
-void
-test1()
-{
- int i;
- int j;
-
- printf("test1 start\n");
- count = 0;
- j = 0;
- sigalarm(2, periodic);
- for(i = 0; i < 500000000; i++){
- if(count >= 10)
- break;
- foo(i, &j);
- }
- if(count < 10){
- printf("\ntest1 failed: too few calls to the handler\n");
- exit(1);
- } else if(i != j){
- // the loop should have called foo() i times, and foo() should
- // have incremented j once per call, so j should equal i.
- // once possible source of errors is that the handler may
- // return somewhere other than where the timer interrupt
- // occurred; another is that that registers may not be
- // restored correctly, causing i or j or the address ofj
- // to get an incorrect value.
- printf("\ntest1 failed: foo() executed fewer times than it was called\n");
- exit(1);
- } else {
- printf("test1 passed\n");
- }
-}