* same with xv6
[mascara-docs.git] / i386 / ucla / src / lab5 / grade-lab3.sh
blob3efca65ddffd56468bebf62fbffdf156968ca7d2
1 #!/bin/sh
3 qemuopts="-hda obj/kernel.img"
4 . ./grade-functions.sh
7 $make $make_args
9 # the [00001000] tags should have [] in them, but that's
10 # a regular expression reserved character, and i'll be damned if
11 # I can figure out how many \ i need to add to get through
12 # however many times the shell interprets this string. sigh.
14 pts=5
16 runtest1 divzero \
17 ! '1/0 is ........!' \
18 'Incoming trap frame at 0xefffff..' \
19 'Trap frame at 0xf.......' \
20 ' trap 0x00000000 Divide error' \
21 ' eip 0x008.....' \
22 ' ss 0x----0023' \
23 '.00001000. free env 00001000'
25 runtest1 breakpoint \
26 'Welcome to the JOS kernel monitor!' \
27 'Incoming trap frame at 0xefffffbc' \
28 'Trap frame at 0xf.......' \
29 ' trap 0x00000003 Breakpoint' \
30 ' eip 0x008.....' \
31 ' ss 0x----0023' \
32 ! '.00001000. free env 00001000'
34 runtest1 softint \
35 'Welcome to the JOS kernel monitor!' \
36 'Incoming trap frame at 0xefffffbc' \
37 'Trap frame at 0xf.......' \
38 ' trap 0x0000000d General Protection' \
39 ' eip 0x008.....' \
40 ' ss 0x----0023' \
41 '.00001000. free env 00001000'
43 runtest1 badsegment \
44 'Incoming trap frame at 0xefffffbc' \
45 'Trap frame at 0xf.......' \
46 ' trap 0x0000000d General Protection' \
47 ' err 0x00000028' \
48 ' eip 0x008.....' \
49 ' ss 0x----0023' \
50 '.00001000. free env 00001000'
52 showpart A
54 pts=5
56 runtest1 faultread \
57 ! 'I read ........ from location 0!' \
58 '.00001000. user fault va 00000000 ip 008.....' \
59 'Incoming trap frame at 0xefffffbc' \
60 'Trap frame at 0xf.......' \
61 ' trap 0x0000000e Page Fault.*' \
62 ' err 0x00000004.*' \
63 '.00001000. free env 00001000'
65 runtest1 faultreadkernel \
66 ! 'I read ........ from location 0xf0100000!' \
67 '.00001000. user fault va f0100000 ip 008.....' \
68 'Incoming trap frame at 0xefffffbc' \
69 'Trap frame at 0xf.......' \
70 ' trap 0x0000000e Page Fault.*' \
71 ' err 0x00000005.*' \
72 '.00001000. free env 00001000' \
74 runtest1 faultwrite \
75 '.00001000. user fault va 00000000 ip 008.....' \
76 'Incoming trap frame at 0xefffffbc' \
77 'Trap frame at 0xf.......' \
78 ' trap 0x0000000e Page Fault.*' \
79 ' err 0x00000006.*' \
80 '.00001000. free env 00001000'
82 runtest1 faultwritekernel \
83 '.00001000. user fault va f0100000 ip 008.....' \
84 'Incoming trap frame at 0xefffffbc' \
85 'Trap frame at 0xf.......' \
86 ' trap 0x0000000e Page Fault.*' \
87 ' err 0x00000007.*' \
88 '.00001000. free env 00001000'
90 runtest1 testbss \
91 'Making sure bss works right...' \
92 'Yes, good. Now doing a wild write off the end...' \
93 '.00001000. user fault va 00c..... ip 008.....' \
94 '.00001000. free env 00001000'
96 runtest1 hello \
97 '.00000000. new env 00001000' \
98 'hello, world' \
99 'i am environment 00001000' \
100 '.00001000. exiting gracefully' \
101 '.00001000. free env 00001000' \
102 'Idle loop - nothing more to do!'
104 runtest1 buggyhello \
105 '.00001000. user_mem_check assertion failure for va 0000000[01]' \
106 '.00001000. free env 00001000'
108 runtest1 buggyhello2 \
109 '.00001000. user_mem_check assertion failure for va 0....000' \
110 '.00001000. free env 00001000' \
111 ! 'hello, world'
113 runtest1 evilhello \
114 '.00001000. user_mem_check assertion failure for va f0100...' \
115 '.00001000. free env 00001000'
117 pts=10
118 keystrokes="backtrace;exit;"
119 runtest1 -tag 'breakpoint [backtrace]' breakpoint \
120 '^Stack backtrace:' \
121 '.*user/breakpoint.c:.*' \
122 '.*lib/libmain.c:.*' \
123 '.*lib/entry.S:.*'
125 keystrokes="backtrace;exit;"
126 runtest1 -tag 'evilbreakpoint [backtrace]' evilbreakpoint \
127 '^Stack backtrace:' \
128 '.*eip 008.*' \
129 ! 'panic'
131 keystrokes=""
133 showpart B
135 pts=30
137 runtest1 dumbfork \
138 '.00000000. new env 00001000' \
139 '.00001000. new env 00001001' \
140 '0: I am the parent!' \
141 '9: I am the parent!' \
142 '0: I am the child!' \
143 '9: I am the child!' \
144 '19: I am the child!' \
145 '.00001000. exiting gracefully' \
146 '.00001000. free env 00001000' \
147 '.00001001. exiting gracefully' \
148 '.00001001. free env 00001001'
150 showfinal