hw5: mostly done

This commit is contained in:
Claudio Maggioni 2020-05-24 16:27:46 +02:00
parent f097334068
commit 71591aa85c
2 changed files with 214 additions and 1001 deletions

View file

@ -1,990 +0,0 @@
cd build && make check
make[1]: Entering directory `/pintos-env/pintos/userprog/build'
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-none -a args-none -- -q -f run args-none < /dev/null 2> tests/userprog/args-none.errors > tests/userprog/args-none.output
perl -I../.. ../../tests/userprog/args-none.ck tests/userprog/args-none tests/userprog/args-none.result
pass tests/userprog/args-none
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-single -a args-single -- -q -f run 'args-single onearg' < /dev/null 2> tests/userprog/args-single.errors > tests/userprog/args-single.output
perl -I../.. ../../tests/userprog/args-single.ck tests/userprog/args-single tests/userprog/args-single.result
pass tests/userprog/args-single
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-multiple -a args-multiple -- -q -f run 'args-multiple some arguments for you!' < /dev/null 2> tests/userprog/args-multiple.errors > tests/userprog/args-multiple.output
perl -I../.. ../../tests/userprog/args-multiple.ck tests/userprog/args-multiple tests/userprog/args-multiple.result
pass tests/userprog/args-multiple
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-many -a args-many -- -q -f run 'args-many a b c d e f g h i j k l m n o p q r s t u v' < /dev/null 2> tests/userprog/args-many.errors > tests/userprog/args-many.output
perl -I../.. ../../tests/userprog/args-many.ck tests/userprog/args-many tests/userprog/args-many.result
pass tests/userprog/args-many
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-dbl-space -a args-dbl-space -- -q -f run 'args-dbl-space two spaces!' < /dev/null 2> tests/userprog/args-dbl-space.errors > tests/userprog/args-dbl-space.output
perl -I../.. ../../tests/userprog/args-dbl-space.ck tests/userprog/args-dbl-space tests/userprog/args-dbl-space.result
pass tests/userprog/args-dbl-space
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/sc-bad-sp -a sc-bad-sp -- -q -f run sc-bad-sp < /dev/null 2> tests/userprog/sc-bad-sp.errors > tests/userprog/sc-bad-sp.output
perl -I../.. ../../tests/userprog/sc-bad-sp.ck tests/userprog/sc-bad-sp tests/userprog/sc-bad-sp.result
FAIL tests/userprog/sc-bad-sp
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xc002b791 0x80480aa
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xc002b791: syscall_handler (.../../userprog/syscall.c:40)
In tests/userprog/sc-bad-sp:
0x080480aa: test_main (...s/userprog/sc-bad-sp.c:19)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/sc-bad-arg -a sc-bad-arg -- -q -f run sc-bad-arg < /dev/null 2> tests/userprog/sc-bad-arg.errors > tests/userprog/sc-bad-arg.output
perl -I../.. ../../tests/userprog/sc-bad-arg.ck tests/userprog/sc-bad-arg tests/userprog/sc-bad-arg.result
FAIL tests/userprog/sc-bad-arg
Test output failed to match any acceptable form.
Acceptable output:
(sc-bad-arg) begin
sc-bad-arg: exit(-1)
Differences in `diff -u' format:
(sc-bad-arg) begin
- sc-bad-arg: exit(-1)
+ sc-bad-arg: exit(-268370093)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/sc-boundary -a sc-boundary -- -q -f run sc-boundary < /dev/null 2> tests/userprog/sc-boundary.errors > tests/userprog/sc-boundary.output
perl -I../.. ../../tests/userprog/sc-boundary.ck tests/userprog/sc-boundary tests/userprog/sc-boundary.result
pass tests/userprog/sc-boundary
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/sc-boundary-2 -a sc-boundary-2 -- -q -f run sc-boundary-2 < /dev/null 2> tests/userprog/sc-boundary-2.errors > tests/userprog/sc-boundary-2.output
perl -I../.. ../../tests/userprog/sc-boundary-2.ck tests/userprog/sc-boundary-2 tests/userprog/sc-boundary-2.result
pass tests/userprog/sc-boundary-2
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/halt -a halt -- -q -f run halt < /dev/null 2> tests/userprog/halt.errors > tests/userprog/halt.output
perl -I../.. ../../tests/userprog/halt.ck tests/userprog/halt tests/userprog/halt.result
FAIL tests/userprog/halt
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a12e
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/halt:
0x0804a12e: halt (.../../lib/user/syscall.c:67)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exit -a exit -- -q -f run exit < /dev/null 2> tests/userprog/exit.errors > tests/userprog/exit.output
perl -I../.. ../../tests/userprog/exit.ck tests/userprog/exit tests/userprog/exit.result
pass tests/userprog/exit
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-normal -a create-normal -- -q -f run create-normal < /dev/null 2> tests/userprog/create-normal.errors > tests/userprog/create-normal.output
perl -I../.. ../../tests/userprog/create-normal.ck tests/userprog/create-normal tests/userprog/create-normal.result
FAIL tests/userprog/create-normal
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1e0
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/create-normal:
0x0804a1e0: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-empty -a create-empty -- -q -f run create-empty < /dev/null 2> tests/userprog/create-empty.errors > tests/userprog/create-empty.output
perl -I../.. ../../tests/userprog/create-empty.ck tests/userprog/create-empty tests/userprog/create-empty.result
FAIL tests/userprog/create-empty
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1e0
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/create-empty:
0x0804a1e0: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-null -a create-null -- -q -f run create-null < /dev/null 2> tests/userprog/create-null.errors > tests/userprog/create-null.output
perl -I../.. ../../tests/userprog/create-null.ck tests/userprog/create-null tests/userprog/create-null.result
FAIL tests/userprog/create-null
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1e0
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/create-null:
0x0804a1e0: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-bad-ptr -a create-bad-ptr -- -q -f run create-bad-ptr < /dev/null 2> tests/userprog/create-bad-ptr.errors > tests/userprog/create-bad-ptr.output
perl -I../.. ../../tests/userprog/create-bad-ptr.ck tests/userprog/create-bad-ptr tests/userprog/create-bad-ptr.result
FAIL tests/userprog/create-bad-ptr
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1e0
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/create-bad-ptr:
0x0804a1e0: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-long -a create-long -- -q -f run create-long < /dev/null 2> tests/userprog/create-long.errors > tests/userprog/create-long.output
perl -I../.. ../../tests/userprog/create-long.ck tests/userprog/create-long tests/userprog/create-long.result
FAIL tests/userprog/create-long
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1f0
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/create-long:
0x0804a1f0: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-exists -a create-exists -- -q -f run create-exists < /dev/null 2> tests/userprog/create-exists.errors > tests/userprog/create-exists.output
perl -I../.. ../../tests/userprog/create-exists.ck tests/userprog/create-exists tests/userprog/create-exists.result
FAIL tests/userprog/create-exists
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a2a0
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/create-exists:
0x0804a2a0: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-bound -a create-bound -- -q -f run create-bound < /dev/null 2> tests/userprog/create-bound.errors > tests/userprog/create-bound.output
perl -I../.. ../../tests/userprog/create-bound.ck tests/userprog/create-bound tests/userprog/create-bound.result
FAIL tests/userprog/create-bound
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a270
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/create-bound:
0x0804a270: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-normal -a open-normal -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run open-normal < /dev/null 2> tests/userprog/open-normal.errors > tests/userprog/open-normal.output
perl -I../.. ../../tests/userprog/open-normal.ck tests/userprog/open-normal tests/userprog/open-normal.result
FAIL tests/userprog/open-normal
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1f4
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/open-normal:
0x0804a1f4: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-missing -a open-missing -- -q -f run open-missing < /dev/null 2> tests/userprog/open-missing.errors > tests/userprog/open-missing.output
perl -I../.. ../../tests/userprog/open-missing.ck tests/userprog/open-missing tests/userprog/open-missing.result
FAIL tests/userprog/open-missing
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1f4
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/open-missing:
0x0804a1f4: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-boundary -a open-boundary -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run open-boundary < /dev/null 2> tests/userprog/open-boundary.errors > tests/userprog/open-boundary.output
perl -I../.. ../../tests/userprog/open-boundary.ck tests/userprog/open-boundary tests/userprog/open-boundary.result
FAIL tests/userprog/open-boundary
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a2a4
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/open-boundary:
0x0804a2a4: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-empty -a open-empty -- -q -f run open-empty < /dev/null 2> tests/userprog/open-empty.errors > tests/userprog/open-empty.output
perl -I../.. ../../tests/userprog/open-empty.ck tests/userprog/open-empty tests/userprog/open-empty.result
FAIL tests/userprog/open-empty
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1f4
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/open-empty:
0x0804a1f4: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-null -a open-null -- -q -f run open-null < /dev/null 2> tests/userprog/open-null.errors > tests/userprog/open-null.output
perl -I../.. ../../tests/userprog/open-null.ck tests/userprog/open-null tests/userprog/open-null.result
FAIL tests/userprog/open-null
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1e4
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/open-null:
0x0804a1e4: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-bad-ptr -a open-bad-ptr -- -q -f run open-bad-ptr < /dev/null 2> tests/userprog/open-bad-ptr.errors > tests/userprog/open-bad-ptr.output
perl -I../.. ../../tests/userprog/open-bad-ptr.ck tests/userprog/open-bad-ptr tests/userprog/open-bad-ptr.result
FAIL tests/userprog/open-bad-ptr
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1f4
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/open-bad-ptr:
0x0804a1f4: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-twice -a open-twice -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run open-twice < /dev/null 2> tests/userprog/open-twice.errors > tests/userprog/open-twice.output
perl -I../.. ../../tests/userprog/open-twice.ck tests/userprog/open-twice tests/userprog/open-twice.result
FAIL tests/userprog/open-twice
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a254
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/open-twice:
0x0804a254: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-normal -a close-normal -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run close-normal < /dev/null 2> tests/userprog/close-normal.errors > tests/userprog/close-normal.output
perl -I../.. ../../tests/userprog/close-normal.ck tests/userprog/close-normal tests/userprog/close-normal.result
FAIL tests/userprog/close-normal
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a214
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/close-normal:
0x0804a214: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-twice -a close-twice -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run close-twice < /dev/null 2> tests/userprog/close-twice.errors > tests/userprog/close-twice.output
perl -I../.. ../../tests/userprog/close-twice.ck tests/userprog/close-twice tests/userprog/close-twice.result
FAIL tests/userprog/close-twice
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a224
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/close-twice:
0x0804a224: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-stdin -a close-stdin -- -q -f run close-stdin < /dev/null 2> tests/userprog/close-stdin.errors > tests/userprog/close-stdin.output
perl -I../.. ../../tests/userprog/close-stdin.ck tests/userprog/close-stdin tests/userprog/close-stdin.result
FAIL tests/userprog/close-stdin
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a24b
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/close-stdin:
0x0804a24b: close (...../lib/user/syscall.c:141)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-stdout -a close-stdout -- -q -f run close-stdout < /dev/null 2> tests/userprog/close-stdout.errors > tests/userprog/close-stdout.output
perl -I../.. ../../tests/userprog/close-stdout.ck tests/userprog/close-stdout tests/userprog/close-stdout.result
FAIL tests/userprog/close-stdout
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a24b
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/close-stdout:
0x0804a24b: close (...../lib/user/syscall.c:141)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-bad-fd -a close-bad-fd -- -q -f run close-bad-fd < /dev/null 2> tests/userprog/close-bad-fd.errors > tests/userprog/close-bad-fd.output
perl -I../.. ../../tests/userprog/close-bad-fd.ck tests/userprog/close-bad-fd tests/userprog/close-bad-fd.result
FAIL tests/userprog/close-bad-fd
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a24b
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/close-bad-fd:
0x0804a24b: close (...../lib/user/syscall.c:141)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-normal -a read-normal -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run read-normal < /dev/null 2> tests/userprog/read-normal.errors > tests/userprog/read-normal.output
perl -I../.. ../../tests/userprog/read-normal.ck tests/userprog/read-normal tests/userprog/read-normal.result
FAIL tests/userprog/read-normal
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1f4
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/read-normal:
0x0804a1f4: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-bad-ptr -a read-bad-ptr -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run read-bad-ptr < /dev/null 2> tests/userprog/read-bad-ptr.errors > tests/userprog/read-bad-ptr.output
perl -I../.. ../../tests/userprog/read-bad-ptr.ck tests/userprog/read-bad-ptr tests/userprog/read-bad-ptr.result
FAIL tests/userprog/read-bad-ptr
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a224
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/read-bad-ptr:
0x0804a224: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-boundary -a read-boundary -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run read-boundary < /dev/null 2> tests/userprog/read-boundary.errors > tests/userprog/read-boundary.output
perl -I../.. ../../tests/userprog/read-boundary.ck tests/userprog/read-boundary tests/userprog/read-boundary.result
FAIL tests/userprog/read-boundary
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a314
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/read-boundary:
0x0804a314: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-zero -a read-zero -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run read-zero < /dev/null 2> tests/userprog/read-zero.errors > tests/userprog/read-zero.output
perl -I../.. ../../tests/userprog/read-zero.ck tests/userprog/read-zero tests/userprog/read-zero.result
FAIL tests/userprog/read-zero
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a244
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/read-zero:
0x0804a244: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-stdout -a read-stdout -- -q -f run read-stdout < /dev/null 2> tests/userprog/read-stdout.errors > tests/userprog/read-stdout.output
perl -I../.. ../../tests/userprog/read-stdout.ck tests/userprog/read-stdout tests/userprog/read-stdout.result
FAIL tests/userprog/read-stdout
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a218
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/read-stdout:
0x0804a218: read (...../lib/user/syscall.c:117)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-bad-fd -a read-bad-fd -- -q -f run read-bad-fd < /dev/null 2> tests/userprog/read-bad-fd.errors > tests/userprog/read-bad-fd.output
perl -I../.. ../../tests/userprog/read-bad-fd.ck tests/userprog/read-bad-fd tests/userprog/read-bad-fd.result
FAIL tests/userprog/read-bad-fd
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a2a8
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/read-bad-fd:
0x0804a2a8: read (...../lib/user/syscall.c:117)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-normal -a write-normal -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run write-normal < /dev/null 2> tests/userprog/write-normal.errors > tests/userprog/write-normal.output
perl -I../.. ../../tests/userprog/write-normal.ck tests/userprog/write-normal tests/userprog/write-normal.result
FAIL tests/userprog/write-normal
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a240
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/write-normal:
0x0804a240: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-bad-ptr -a write-bad-ptr -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run write-bad-ptr < /dev/null 2> tests/userprog/write-bad-ptr.errors > tests/userprog/write-bad-ptr.output
perl -I../.. ../../tests/userprog/write-bad-ptr.ck tests/userprog/write-bad-ptr tests/userprog/write-bad-ptr.result
FAIL tests/userprog/write-bad-ptr
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a224
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/write-bad-ptr:
0x0804a224: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-boundary -a write-boundary -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run write-boundary < /dev/null 2> tests/userprog/write-boundary.errors > tests/userprog/write-boundary.output
perl -I../.. ../../tests/userprog/write-boundary.ck tests/userprog/write-boundary tests/userprog/write-boundary.result
FAIL tests/userprog/write-boundary
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a2d4
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/write-boundary:
0x0804a2d4: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-zero -a write-zero -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run write-zero < /dev/null 2> tests/userprog/write-zero.errors > tests/userprog/write-zero.output
perl -I../.. ../../tests/userprog/write-zero.ck tests/userprog/write-zero tests/userprog/write-zero.result
FAIL tests/userprog/write-zero
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a234
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/write-zero:
0x0804a234: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-stdin -a write-stdin -- -q -f run write-stdin < /dev/null 2> tests/userprog/write-stdin.errors > tests/userprog/write-stdin.output
perl -I../.. ../../tests/userprog/write-stdin.ck tests/userprog/write-stdin tests/userprog/write-stdin.result
pass tests/userprog/write-stdin
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-bad-fd -a write-bad-fd -- -q -f run write-bad-fd < /dev/null 2> tests/userprog/write-bad-fd.errors > tests/userprog/write-bad-fd.output
perl -I../.. ../../tests/userprog/write-bad-fd.ck tests/userprog/write-bad-fd tests/userprog/write-bad-fd.result
pass tests/userprog/write-bad-fd
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-once -a exec-once -p tests/userprog/child-simple -a child-simple -- -q -f run exec-once < /dev/null 2> tests/userprog/exec-once.errors > tests/userprog/exec-once.output
perl -I../.. ../../tests/userprog/exec-once.ck tests/userprog/exec-once tests/userprog/exec-once.result
FAIL tests/userprog/exec-once
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1a1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/exec-once:
0x0804a1a1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-arg -a exec-arg -p tests/userprog/child-args -a child-args -- -q -f run exec-arg < /dev/null 2> tests/userprog/exec-arg.errors > tests/userprog/exec-arg.output
perl -I../.. ../../tests/userprog/exec-arg.ck tests/userprog/exec-arg tests/userprog/exec-arg.result
FAIL tests/userprog/exec-arg
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1a1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/exec-arg:
0x0804a1a1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-multiple -a exec-multiple -p tests/userprog/child-simple -a child-simple -- -q -f run exec-multiple < /dev/null 2> tests/userprog/exec-multiple.errors > tests/userprog/exec-multiple.output
perl -I../.. ../../tests/userprog/exec-multiple.ck tests/userprog/exec-multiple tests/userprog/exec-multiple.result
FAIL tests/userprog/exec-multiple
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1e1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/exec-multiple:
0x0804a1e1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-missing -a exec-missing -- -q -f run exec-missing < /dev/null 2> tests/userprog/exec-missing.errors > tests/userprog/exec-missing.output
perl -I../.. ../../tests/userprog/exec-missing.ck tests/userprog/exec-missing tests/userprog/exec-missing.result
FAIL tests/userprog/exec-missing
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1b1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/exec-missing:
0x0804a1b1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-bad-ptr -a exec-bad-ptr -- -q -f run exec-bad-ptr < /dev/null 2> tests/userprog/exec-bad-ptr.errors > tests/userprog/exec-bad-ptr.output
perl -I../.. ../../tests/userprog/exec-bad-ptr.ck tests/userprog/exec-bad-ptr tests/userprog/exec-bad-ptr.result
FAIL tests/userprog/exec-bad-ptr
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1a1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/exec-bad-ptr:
0x0804a1a1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/wait-simple -a wait-simple -p tests/userprog/child-simple -a child-simple -- -q -f run wait-simple < /dev/null 2> tests/userprog/wait-simple.errors > tests/userprog/wait-simple.output
perl -I../.. ../../tests/userprog/wait-simple.ck tests/userprog/wait-simple tests/userprog/wait-simple.result
FAIL tests/userprog/wait-simple
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1b1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/wait-simple:
0x0804a1b1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/wait-twice -a wait-twice -p tests/userprog/child-simple -a child-simple -- -q -f run wait-twice < /dev/null 2> tests/userprog/wait-twice.errors > tests/userprog/wait-twice.output
perl -I../.. ../../tests/userprog/wait-twice.ck tests/userprog/wait-twice tests/userprog/wait-twice.result
FAIL tests/userprog/wait-twice
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1d1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/wait-twice:
0x0804a1d1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/wait-killed -a wait-killed -p tests/userprog/child-bad -a child-bad -- -q -f run wait-killed < /dev/null 2> tests/userprog/wait-killed.errors > tests/userprog/wait-killed.output
perl -I../.. ../../tests/userprog/wait-killed.ck tests/userprog/wait-killed tests/userprog/wait-killed.result
FAIL tests/userprog/wait-killed
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1b1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/wait-killed:
0x0804a1b1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/wait-bad-pid -a wait-bad-pid -- -q -f run wait-bad-pid < /dev/null 2> tests/userprog/wait-bad-pid.errors > tests/userprog/wait-bad-pid.output
perl -I../.. ../../tests/userprog/wait-bad-pid.ck tests/userprog/wait-bad-pid tests/userprog/wait-bad-pid.result
FAIL tests/userprog/wait-bad-pid
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a1ae
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/wait-bad-pid:
0x0804a1ae: wait (.../../lib/user/syscall.c:87)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/multi-recurse -a multi-recurse -- -q -f run 'multi-recurse 15' < /dev/null 2> tests/userprog/multi-recurse.errors > tests/userprog/multi-recurse.output
perl -I../.. ../../tests/userprog/multi-recurse.ck tests/userprog/multi-recurse tests/userprog/multi-recurse.result
FAIL tests/userprog/multi-recurse
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a5e1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/multi-recurse:
0x0804a5e1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/multi-child-fd -a multi-child-fd -p ../../tests/userprog/sample.txt -a sample.txt -p tests/userprog/child-close -a child-close -- -q -f run multi-child-fd < /dev/null 2> tests/userprog/multi-child-fd.errors > tests/userprog/multi-child-fd.output
perl -I../.. ../../tests/userprog/multi-child-fd.ck tests/userprog/multi-child-fd tests/userprog/multi-child-fd.result
FAIL tests/userprog/multi-child-fd
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a264
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/multi-child-fd:
0x0804a264: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/rox-simple -a rox-simple -- -q -f run rox-simple < /dev/null 2> tests/userprog/rox-simple.errors > tests/userprog/rox-simple.output
perl -I../.. ../../tests/userprog/rox-simple.ck tests/userprog/rox-simple tests/userprog/rox-simple.result
FAIL tests/userprog/rox-simple
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a264
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/rox-simple:
0x0804a264: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/rox-child -a rox-child -p tests/userprog/child-rox -a child-rox -- -q -f run rox-child < /dev/null 2> tests/userprog/rox-child.errors > tests/userprog/rox-child.output
perl -I../.. ../../tests/userprog/rox-child.ck tests/userprog/rox-child tests/userprog/rox-child.result
FAIL tests/userprog/rox-child
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a334
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/rox-child:
0x0804a334: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/rox-multichild -a rox-multichild -p tests/userprog/child-rox -a child-rox -- -q -f run rox-multichild < /dev/null 2> tests/userprog/rox-multichild.errors > tests/userprog/rox-multichild.output
perl -I../.. ../../tests/userprog/rox-multichild.ck tests/userprog/rox-multichild tests/userprog/rox-multichild.result
FAIL tests/userprog/rox-multichild
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a334
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/rox-multichild:
0x0804a334: open (...../lib/user/syscall.c:105)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-read -a bad-read -- -q -f run bad-read < /dev/null 2> tests/userprog/bad-read.errors > tests/userprog/bad-read.output
perl -I../.. ../../tests/userprog/bad-read.ck tests/userprog/bad-read tests/userprog/bad-read.result
FAIL tests/userprog/bad-read
Test output failed to match any acceptable form.
Acceptable output:
(bad-read) begin
bad-read: exit(-1)
Differences in `diff -u' format:
(bad-read) begin
- bad-read: exit(-1)
(User fault messages are excluded for matching purposes.)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-write -a bad-write -- -q -f run bad-write < /dev/null 2> tests/userprog/bad-write.errors > tests/userprog/bad-write.output
perl -I../.. ../../tests/userprog/bad-write.ck tests/userprog/bad-write tests/userprog/bad-write.result
FAIL tests/userprog/bad-write
Test output failed to match any acceptable form.
Acceptable output:
(bad-write) begin
bad-write: exit(-1)
Differences in `diff -u' format:
(bad-write) begin
- bad-write: exit(-1)
(User fault messages are excluded for matching purposes.)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-read2 -a bad-read2 -- -q -f run bad-read2 < /dev/null 2> tests/userprog/bad-read2.errors > tests/userprog/bad-read2.output
perl -I../.. ../../tests/userprog/bad-read2.ck tests/userprog/bad-read2 tests/userprog/bad-read2.result
FAIL tests/userprog/bad-read2
Test output failed to match any acceptable form.
Acceptable output:
(bad-read2) begin
bad-read2: exit(-1)
Differences in `diff -u' format:
(bad-read2) begin
- bad-read2: exit(-1)
(User fault messages are excluded for matching purposes.)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-write2 -a bad-write2 -- -q -f run bad-write2 < /dev/null 2> tests/userprog/bad-write2.errors > tests/userprog/bad-write2.output
perl -I../.. ../../tests/userprog/bad-write2.ck tests/userprog/bad-write2 tests/userprog/bad-write2.result
FAIL tests/userprog/bad-write2
Test output failed to match any acceptable form.
Acceptable output:
(bad-write2) begin
bad-write2: exit(-1)
Differences in `diff -u' format:
(bad-write2) begin
- bad-write2: exit(-1)
(User fault messages are excluded for matching purposes.)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-jump -a bad-jump -- -q -f run bad-jump < /dev/null 2> tests/userprog/bad-jump.errors > tests/userprog/bad-jump.output
perl -I../.. ../../tests/userprog/bad-jump.ck tests/userprog/bad-jump tests/userprog/bad-jump.result
FAIL tests/userprog/bad-jump
Test output failed to match any acceptable form.
Acceptable output:
(bad-jump) begin
bad-jump: exit(-1)
Differences in `diff -u' format:
(bad-jump) begin
- bad-jump: exit(-1)
(User fault messages are excluded for matching purposes.)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-jump2 -a bad-jump2 -- -q -f run bad-jump2 < /dev/null 2> tests/userprog/bad-jump2.errors > tests/userprog/bad-jump2.output
perl -I../.. ../../tests/userprog/bad-jump2.ck tests/userprog/bad-jump2 tests/userprog/bad-jump2.result
FAIL tests/userprog/bad-jump2
Test output failed to match any acceptable form.
Acceptable output:
(bad-jump2) begin
bad-jump2: exit(-1)
Differences in `diff -u' format:
(bad-jump2) begin
- bad-jump2: exit(-1)
(User fault messages are excluded for matching purposes.)
pintos -v -k -T 360 --bochs --filesys-size=2 -p tests/userprog/no-vm/multi-oom -a multi-oom -- -q -f run multi-oom < /dev/null 2> tests/userprog/no-vm/multi-oom.errors > tests/userprog/no-vm/multi-oom.output
perl -I../.. ../../tests/userprog/no-vm/multi-oom.ck tests/userprog/no-vm/multi-oom tests/userprog/no-vm/multi-oom.result
FAIL tests/userprog/no-vm/multi-oom
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a7e1
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/userprog/no-vm/multi-oom:
0x0804a7e1: exec (.../../lib/user/syscall.c:81)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-create -a lg-create -- -q -f run lg-create < /dev/null 2> tests/filesys/base/lg-create.errors > tests/filesys/base/lg-create.output
perl -I../.. ../../tests/filesys/base/lg-create.ck tests/filesys/base/lg-create tests/filesys/base/lg-create.result
FAIL tests/filesys/base/lg-create
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a360
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/filesys/base/lg-create:
0x0804a360: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-full -a lg-full -- -q -f run lg-full < /dev/null 2> tests/filesys/base/lg-full.errors > tests/filesys/base/lg-full.output
perl -I../.. ../../tests/filesys/base/lg-full.ck tests/filesys/base/lg-full tests/filesys/base/lg-full.result
FAIL tests/filesys/base/lg-full
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3
Translation of call stack:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-random -a lg-random -- -q -f run lg-random < /dev/null 2> tests/filesys/base/lg-random.errors > tests/filesys/base/lg-random.output
perl -I../.. ../../tests/filesys/base/lg-random.ck tests/filesys/base/lg-random tests/filesys/base/lg-random.result
FAIL tests/filesys/base/lg-random
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a520
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/filesys/base/lg-random:
0x0804a520: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-seq-block -a lg-seq-block -- -q -f run lg-seq-block < /dev/null 2> tests/filesys/base/lg-seq-block.errors > tests/filesys/base/lg-seq-block.output
perl -I../.. ../../tests/filesys/base/lg-seq-block.ck tests/filesys/base/lg-seq-block tests/filesys/base/lg-seq-block.result
FAIL tests/filesys/base/lg-seq-block
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3
Translation of call stack:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-seq-random -a lg-seq-random -- -q -f run lg-seq-random < /dev/null 2> tests/filesys/base/lg-seq-random.errors > tests/filesys/base/lg-seq-random.output
perl -I../.. ../../tests/filesys/base/lg-seq-random.ck tests/filesys/base/lg-seq-random tests/filesys/base/lg-seq-random.result
FAIL tests/filesys/base/lg-seq-random
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3
Translation of call stack:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-create -a sm-create -- -q -f run sm-create < /dev/null 2> tests/filesys/base/sm-create.errors > tests/filesys/base/sm-create.output
perl -I../.. ../../tests/filesys/base/sm-create.ck tests/filesys/base/sm-create tests/filesys/base/sm-create.result
FAIL tests/filesys/base/sm-create
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a360
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/filesys/base/sm-create:
0x0804a360: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-full -a sm-full -- -q -f run sm-full < /dev/null 2> tests/filesys/base/sm-full.errors > tests/filesys/base/sm-full.output
perl -I../.. ../../tests/filesys/base/sm-full.ck tests/filesys/base/sm-full tests/filesys/base/sm-full.result
FAIL tests/filesys/base/sm-full
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3
Translation of call stack:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-random -a sm-random -- -q -f run sm-random < /dev/null 2> tests/filesys/base/sm-random.errors > tests/filesys/base/sm-random.output
perl -I../.. ../../tests/filesys/base/sm-random.ck tests/filesys/base/sm-random tests/filesys/base/sm-random.result
FAIL tests/filesys/base/sm-random
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a520
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/filesys/base/sm-random:
0x0804a520: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-seq-block -a sm-seq-block -- -q -f run sm-seq-block < /dev/null 2> tests/filesys/base/sm-seq-block.errors > tests/filesys/base/sm-seq-block.output
perl -I../.. ../../tests/filesys/base/sm-seq-block.ck tests/filesys/base/sm-seq-block tests/filesys/base/sm-seq-block.result
FAIL tests/filesys/base/sm-seq-block
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3
Translation of call stack:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-seq-random -a sm-seq-random -- -q -f run sm-seq-random < /dev/null 2> tests/filesys/base/sm-seq-random.errors > tests/filesys/base/sm-seq-random.output
perl -I../.. ../../tests/filesys/base/sm-seq-random.ck tests/filesys/base/sm-seq-random tests/filesys/base/sm-seq-random.result
FAIL tests/filesys/base/sm-seq-random
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3
Translation of call stack:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
pintos -v -k -T 300 --bochs --filesys-size=2 -p tests/filesys/base/syn-read -a syn-read -p tests/filesys/base/child-syn-read -a child-syn-read -- -q -f run syn-read < /dev/null 2> tests/filesys/base/syn-read.errors > tests/filesys/base/syn-read.output
perl -I../.. ../../tests/filesys/base/syn-read.ck tests/filesys/base/syn-read tests/filesys/base/syn-read.result
FAIL tests/filesys/base/syn-read
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a420
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/filesys/base/syn-read:
0x0804a420: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/syn-remove -a syn-remove -- -q -f run syn-remove < /dev/null 2> tests/filesys/base/syn-remove.errors > tests/filesys/base/syn-remove.output
perl -I../.. ../../tests/filesys/base/syn-remove.ck tests/filesys/base/syn-remove tests/filesys/base/syn-remove.result
FAIL tests/filesys/base/syn-remove
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a4c0
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/filesys/base/syn-remove:
0x0804a4c0: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/syn-write -a syn-write -p tests/filesys/base/child-syn-wrt -a child-syn-wrt -- -q -f run syn-write < /dev/null 2> tests/filesys/base/syn-write.errors > tests/filesys/base/syn-write.output
perl -I../.. ../../tests/filesys/base/syn-write.ck tests/filesys/base/syn-write tests/filesys/base/syn-write.result
FAIL tests/filesys/base/syn-write
Kernel panic in run: PANIC at ../../userprog/exception.c:100 in kill(): Kernel bug - unexpected interrupt in kernel
Call stack: 0xc00285ee 0xe3e3e3e3 0x804a430
Translation of call stack:
In kernel.o:
0xc00285ee: debug_panic (.../../lib/kernel/debug.c:38)
0xe3e3e3e3: (unknown)
In tests/filesys/base/syn-write:
0x0804a430: create (.../../lib/user/syscall.c:93)
Translations of user virtual addresses above are based on a guess at
the binary to use. If this guess is incorrect, then those
translations will be misleading.
pass tests/userprog/args-none
pass tests/userprog/args-single
pass tests/userprog/args-multiple
pass tests/userprog/args-many
pass tests/userprog/args-dbl-space
FAIL tests/userprog/sc-bad-sp
FAIL tests/userprog/sc-bad-arg
pass tests/userprog/sc-boundary
pass tests/userprog/sc-boundary-2
FAIL tests/userprog/halt
pass tests/userprog/exit
FAIL tests/userprog/create-normal
FAIL tests/userprog/create-empty
FAIL tests/userprog/create-null
FAIL tests/userprog/create-bad-ptr
FAIL tests/userprog/create-long
FAIL tests/userprog/create-exists
FAIL tests/userprog/create-bound
FAIL tests/userprog/open-normal
FAIL tests/userprog/open-missing
FAIL tests/userprog/open-boundary
FAIL tests/userprog/open-empty
FAIL tests/userprog/open-null
FAIL tests/userprog/open-bad-ptr
FAIL tests/userprog/open-twice
FAIL tests/userprog/close-normal
FAIL tests/userprog/close-twice
FAIL tests/userprog/close-stdin
FAIL tests/userprog/close-stdout
FAIL tests/userprog/close-bad-fd
FAIL tests/userprog/read-normal
FAIL tests/userprog/read-bad-ptr
FAIL tests/userprog/read-boundary
FAIL tests/userprog/read-zero
FAIL tests/userprog/read-stdout
FAIL tests/userprog/read-bad-fd
FAIL tests/userprog/write-normal
FAIL tests/userprog/write-bad-ptr
FAIL tests/userprog/write-boundary
FAIL tests/userprog/write-zero
pass tests/userprog/write-stdin
pass tests/userprog/write-bad-fd
FAIL tests/userprog/exec-once
FAIL tests/userprog/exec-arg
FAIL tests/userprog/exec-multiple
FAIL tests/userprog/exec-missing
FAIL tests/userprog/exec-bad-ptr
FAIL tests/userprog/wait-simple
FAIL tests/userprog/wait-twice
FAIL tests/userprog/wait-killed
FAIL tests/userprog/wait-bad-pid
FAIL tests/userprog/multi-recurse
FAIL tests/userprog/multi-child-fd
FAIL tests/userprog/rox-simple
FAIL tests/userprog/rox-child
FAIL tests/userprog/rox-multichild
FAIL tests/userprog/bad-read
FAIL tests/userprog/bad-write
FAIL tests/userprog/bad-read2
FAIL tests/userprog/bad-write2
FAIL tests/userprog/bad-jump
FAIL tests/userprog/bad-jump2
FAIL tests/userprog/no-vm/multi-oom
FAIL tests/filesys/base/lg-create
FAIL tests/filesys/base/lg-full
FAIL tests/filesys/base/lg-random
FAIL tests/filesys/base/lg-seq-block
FAIL tests/filesys/base/lg-seq-random
FAIL tests/filesys/base/sm-create
FAIL tests/filesys/base/sm-full
FAIL tests/filesys/base/sm-random
FAIL tests/filesys/base/sm-seq-block
FAIL tests/filesys/base/sm-seq-random
FAIL tests/filesys/base/syn-read
FAIL tests/filesys/base/syn-remove
FAIL tests/filesys/base/syn-write
66 of 76 tests failed.
make[1]: Leaving directory `/pintos-env/pintos/userprog/build'

View file

@ -7,18 +7,52 @@
#include "userprog/process.h" #include "userprog/process.h"
#include "threads/vaddr.h" #include "threads/vaddr.h"
#include "userprog/pagedir.h" #include "userprog/pagedir.h"
#include "lib/kernel/hash.h"
#include "filesys/filesys.h"
#include "filesys/file.h"
typedef int (*handler) (uint32_t, uint32_t, uint32_t); typedef int (*handler) (uint32_t, uint32_t, uint32_t);
static handler syscall_vec[128]; static handler syscall_vec[128];
static int sys_write (int fd, const void *buffer, unsigned length);
static int sys_exit (int status); static int sys_exit (int status);
static int sys_wait (tid_t tid); static int sys_wait (tid_t tid);
static tid_t sys_exec (const char* file_name); static tid_t sys_exec (const char* file_name);
static void syscall_nop(void); static void syscall_nop(void);
static void sys_halt(void);
bool sys_create(const char* filename, unsigned initial_size);
bool sys_remove(const char* filename);
int sys_open(const char* file);
int sys_filesize(int fd);
void sys_seek(int fd, unsigned position);
unsigned sys_tell(int fd);
void sys_close(int fd);
int sys_read(int fd, void *buffer, unsigned size);
int sys_write(int fd, const void *buffer, unsigned size);
static void syscall_handler (struct intr_frame *); static void syscall_handler (struct intr_frame *);
struct fd_item {
int fd;
struct file* file;
struct hash_elem elem;
};
int next_fd = 3;
struct hash fd_table;
struct semaphore filesys_lock;
static unsigned item_hash (const struct hash_elem* e, void* aux) {
struct fd_item* i = hash_entry(e, struct fd_item, elem);
return hash_int(i->fd);
}
static bool item_compare(const struct hash_elem* a, const struct hash_elem* b, void* aux) {
struct fd_item *i_a = hash_entry(a, struct fd_item, elem);
struct fd_item *i_b = hash_entry(b, struct fd_item, elem);
return i_a->fd < i_b->fd;
}
void void
syscall_init (void) syscall_init (void)
{ {
@ -27,7 +61,186 @@ syscall_init (void)
syscall_vec[SYS_EXIT] = (handler)sys_exit; syscall_vec[SYS_EXIT] = (handler)sys_exit;
syscall_vec[SYS_WAIT] = (handler)sys_wait; syscall_vec[SYS_WAIT] = (handler)sys_wait;
syscall_vec[SYS_EXEC] = (handler)sys_exec; syscall_vec[SYS_EXEC] = (handler)sys_exec;
syscall_vec[SYS_HALT] = (handler)sys_halt;
syscall_vec[SYS_CREATE] = (handler)sys_create;
syscall_vec[SYS_REMOVE] = (handler)sys_remove;
syscall_vec[SYS_OPEN] = (handler)sys_open;
syscall_vec[SYS_FILESIZE] = (handler)sys_filesize;
syscall_vec[SYS_SEEK] = (handler)sys_seek;
syscall_vec[SYS_TELL] = (handler)sys_tell;
syscall_vec[SYS_CLOSE] = (handler)sys_close;
syscall_vec[SYS_READ] = (handler)sys_read;
syscall_vec[SYS_WRITE] = (handler)sys_write; syscall_vec[SYS_WRITE] = (handler)sys_write;
hash_init(&fd_table, item_hash, item_compare, NULL);
sema_init(&filesys_lock, 1);
}
static bool check_ptr(const void* ptr) {
if (ptr == NULL || is_kernel_vaddr(ptr) ||
pagedir_get_page(thread_current()->pagedir, ptr) == NULL) {
sys_exit(-1);
}
return false;
}
static
void sys_halt(void) {
shutdown_power_off();
}
bool sys_create(const char* filename, unsigned initial_size) {
if (check_ptr(filename)) return 0;
sema_down (&filesys_lock);
bool return_code = filesys_create(filename, initial_size);
sema_up (&filesys_lock);
return return_code;
}
bool sys_remove(const char* filename) {
if (check_ptr(filename)) return 0;
sema_down (&filesys_lock);
bool return_code = filesys_remove(filename);
sema_up (&filesys_lock);
return return_code;
}
int sys_open(const char* file) {
if (check_ptr(file)) return -1;
struct file* file_opened;
struct fd_item* fd = malloc(sizeof(struct fd_item*));
if (!fd) {
return -1;
}
sema_down (&filesys_lock);
file_opened = filesys_open(file);
if (!file_opened) {
free(fd);
sema_up (&filesys_lock);
return -1;
}
fd->file = file_opened; //file save
fd->fd = next_fd++;
hash_insert(&fd_table, &fd->elem);
sema_up (&filesys_lock);
return fd->fd;
}
int sys_filesize(int fd) {
sema_down (&filesys_lock);
struct fd_item i;
i.fd = fd;
struct fd_item* file_d = hash_entry(hash_find(&fd_table, &i.elem), struct fd_item, elem);
if(file_d == NULL) {
sema_up (&filesys_lock);
return -1;
}
int ret = file_length(file_d->file);
sema_up (&filesys_lock);
return ret;
}
void sys_seek(int fd, unsigned position) {
sema_down (&filesys_lock);
struct fd_item i;
i.fd = fd;
struct fd_item* file_d = hash_entry(hash_find(&fd_table, &i.elem), struct fd_item, elem);
if(file_d && file_d->file) {
file_seek(file_d->file, position);
}
else
return;
sema_up (&filesys_lock);
}
unsigned sys_tell(int fd) {
sema_down (&filesys_lock);
struct fd_item i;
i.fd = fd;
struct fd_item* file_d = hash_entry(hash_find(&fd_table, &i.elem), struct fd_item, elem);
unsigned ret;
if(file_d && file_d->file) {
ret = file_tell(file_d->file);
}
else
ret = -1;
sema_up (&filesys_lock);
return ret;
}
void sys_close(int fd) {
sema_down (&filesys_lock);
struct fd_item i;
i.fd = fd;
struct hash_elem* h = hash_find(&fd_table, &i.elem);
if (h == NULL) sys_exit(-1);
struct fd_item* file_d = hash_entry(h, struct fd_item, elem);
if(file_d && file_d->file) {
file_close(file_d->file);
hash_delete(&fd_table, &(file_d->elem));
free(file_d);
}
sema_up (&filesys_lock);
}
int sys_read(int fd, void *buffer, unsigned size) {
if (check_ptr(buffer)||check_ptr(buffer+size)) return -1;
sema_down (&filesys_lock);
int ret;
if(fd == 0) {
return -1;
} else {
struct fd_item i;
i.fd = fd;
struct hash_elem* h = hash_find(&fd_table, &i.elem);
if (h == NULL) sys_exit(-1);
struct fd_item* file_d = hash_entry(h, struct fd_item, elem);
if(file_d && file_d->file) {
ret = file_read(file_d->file, buffer, size);
}
else // no such file or can't open
ret = -1;
}
sema_up (&filesys_lock);
return ret;
}
int sys_write(int fd, const void *buffer, unsigned size) {
if (check_ptr(buffer)||check_ptr(buffer+size)) return -1;
int ret;
if(fd == 1) { // write to stdout
putbuf(buffer, size);
ret = size;
} else {
sema_down (&filesys_lock);
struct fd_item i;
i.fd = fd;
struct hash_elem* h = hash_find(&fd_table, &i.elem);
if (h == NULL) sys_exit(-1);
struct fd_item* file_d = hash_entry(h, struct fd_item, elem);
if(file_d && file_d->file) {
ret = file_write(file_d->file, buffer, size);
}
else // no such file or can't open
ret = -1;
sema_up (&filesys_lock);
}
return ret;
} }
static void static void
@ -49,16 +262,6 @@ syscall_handler (struct intr_frame *f)
f->eax = ret; f->eax = ret;
} }
static int
sys_write (int fd, const void *buffer, unsigned length) {
if (fd == 1) { // if stdout
putbuf (buffer, length);
return length;
} else {
return -1;
}
}
int int
sys_exit (int status) sys_exit (int status)
{ {