diff --git a/code/autobuild.sh b/code/autobuild.sh new file mode 100755 index 0000000..e0d39d6 --- /dev/null +++ b/code/autobuild.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Nothing to be done here +exit 0 diff --git a/code/autotest.sh b/code/autotest.sh new file mode 100755 index 0000000..1ce5b53 --- /dev/null +++ b/code/autotest.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +BASE_COMMIT=95a80f598fc57c60aed3737c60ee437d94eb8540 +LABS=`git diff $BASE_COMMIT --stat | grep -o "lab[0-9]" | uniq` + +if [ "$LABS" = "" ]; then + echo "No solutions provided. Skip this time." + exit 0 +fi + +failed=0 + +pwd=`pwd` +summary=$pwd/.score_summary + +echo -n > $summary +for lab in $LABS; do + pushd $lab > /dev/null + if ! make grade > .score 2>&1; then + failed=`echo $lab | grep -o [0-9]` + fi + score=`egrep -o "Score: [0-9]+/[0-9]+" .score` + echo "$lab $score" >> $summary + make clean > /dev/null + popd > /dev/null +done + +echo "Labs with changes detected: " $LABS +echo +echo "============================== Summary ==============================" +cat $summary +rm $summary +echo + +for lab in $LABS; do + echo "================================ $lab ===============================" + cat $lab/.score + rm $lab/.score +done + +exit $failed diff --git a/code/lab1/tools/function.mk b/code/lab1/tools/function.mk index 58a27e4..9b8be0c 100644 --- a/code/lab1/tools/function.mk +++ b/code/lab1/tools/function.mk @@ -70,7 +70,7 @@ endef # finish all define do_finish_all ALLDEPS = $$(ALLOBJS:.o=.d) -$$(sort $$(dir $$(ALLOBJS)) $(BINDIR) $(OBJDIR)): +$$(sort $$(dir $$(ALLOBJS)) $(BINDIR)$(SLASH) $(OBJDIR)$(SLASH)): @$(MKDIR) $$@ endef diff --git a/code/lab4/kern/mm/kmalloc.c b/code/lab4/kern/mm/kmalloc.c index 6565626..ed3e29a 100644 --- a/code/lab4/kern/mm/kmalloc.c +++ b/code/lab4/kern/mm/kmalloc.c @@ -186,14 +186,9 @@ static void slob_free(void *block, int size) -void check_slob(void) { - cprintf("check_slob() success\n"); -} - void slob_init(void) { cprintf("use SLOB allocator\n"); - check_slob(); } inline void diff --git a/code/lab4/tools/grade.sh b/code/lab4/tools/grade.sh index ea11411..8d2b2bd 100644 --- a/code/lab4/tools/grade.sh +++ b/code/lab4/tools/grade.sh @@ -332,10 +332,6 @@ quick_check 'check page table' \ ' |-- PTE(000e0) faf00000-fafe0000 000e0000 urw' \ ' |-- PTE(00001) fafeb000-fafec000 00001000 -rw' -pts=10 -quick_check 'check slob' \ - 'check_slob() succeeded!' - pts=25 quick_check 'check vmm' \ 'check_vma_struct() succeeded!' \ diff --git a/code/lab5/kern/mm/kmalloc.c b/code/lab5/kern/mm/kmalloc.c index 6565626..ed3e29a 100644 --- a/code/lab5/kern/mm/kmalloc.c +++ b/code/lab5/kern/mm/kmalloc.c @@ -186,14 +186,9 @@ static void slob_free(void *block, int size) -void check_slob(void) { - cprintf("check_slob() success\n"); -} - void slob_init(void) { cprintf("use SLOB allocator\n"); - check_slob(); } inline void diff --git a/code/lab5/tools/grade.sh b/code/lab5/tools/grade.sh index 44761e0..29db669 100644 --- a/code/lab5/tools/grade.sh +++ b/code/lab5/tools/grade.sh @@ -338,7 +338,6 @@ default_check() { 'PDE(001) fac00000-fb000000 00400000 -rw' \ ' |-- PTE(000e0) faf00000-fafe0000 000e0000 urw' \ ' |-- PTE(00001) fafeb000-fafec000 00001000 -rw' \ - 'check_slob() succeeded!' \ 'check_vma_struct() succeeded!' \ 'page fault at 0x00000100: K/W [no page found].' \ 'check_pgfault() succeeded!' \ diff --git a/code/lab6/kern/mm/kmalloc.c b/code/lab6/kern/mm/kmalloc.c index 6565626..ed3e29a 100644 --- a/code/lab6/kern/mm/kmalloc.c +++ b/code/lab6/kern/mm/kmalloc.c @@ -186,14 +186,9 @@ static void slob_free(void *block, int size) -void check_slob(void) { - cprintf("check_slob() success\n"); -} - void slob_init(void) { cprintf("use SLOB allocator\n"); - check_slob(); } inline void diff --git a/code/lab6/tools/grade.sh b/code/lab6/tools/grade.sh index abe0b09..a3a52d0 100644 --- a/code/lab6/tools/grade.sh +++ b/code/lab6/tools/grade.sh @@ -338,7 +338,6 @@ default_check() { 'PDE(001) fac00000-fb000000 00400000 -rw' \ ' |-- PTE(000e0) faf00000-fafe0000 000e0000 urw' \ ' |-- PTE(00001) fafeb000-fafec000 00001000 -rw' \ - 'check_slob() succeeded!' \ 'check_vma_struct() succeeded!' \ 'page fault at 0x00000100: K/W [no page found].' \ 'check_pgfault() succeeded!' \ diff --git a/code/lab7/kern/mm/kmalloc.c b/code/lab7/kern/mm/kmalloc.c index 6565626..ed3e29a 100644 --- a/code/lab7/kern/mm/kmalloc.c +++ b/code/lab7/kern/mm/kmalloc.c @@ -186,14 +186,9 @@ static void slob_free(void *block, int size) -void check_slob(void) { - cprintf("check_slob() success\n"); -} - void slob_init(void) { cprintf("use SLOB allocator\n"); - check_slob(); } inline void diff --git a/code/lab7/tools/grade.sh b/code/lab7/tools/grade.sh index b9bc485..e8c68bd 100644 --- a/code/lab7/tools/grade.sh +++ b/code/lab7/tools/grade.sh @@ -338,7 +338,6 @@ default_check() { 'PDE(001) fac00000-fb000000 00400000 -rw' \ ' |-- PTE(000e0) faf00000-fafe0000 000e0000 urw' \ ' |-- PTE(00001) fafeb000-fafec000 00001000 -rw' \ - 'check_slob() succeeded!' \ 'check_vma_struct() succeeded!' \ 'page fault at 0x00000100: K/W [no page found].' \ 'check_pgfault() succeeded!' \ diff --git a/code/lab8/kern/fs/devs/dev.c b/code/lab8/kern/fs/devs/dev.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/devs/dev.h b/code/lab8/kern/fs/devs/dev.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/devs/dev_disk0.c b/code/lab8/kern/fs/devs/dev_disk0.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/devs/dev_stdin.c b/code/lab8/kern/fs/devs/dev_stdin.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/devs/dev_stdout.c b/code/lab8/kern/fs/devs/dev_stdout.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/file.c b/code/lab8/kern/fs/file.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/file.h b/code/lab8/kern/fs/file.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/fs.c b/code/lab8/kern/fs/fs.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/fs.h b/code/lab8/kern/fs/fs.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/iobuf.c b/code/lab8/kern/fs/iobuf.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/iobuf.h b/code/lab8/kern/fs/iobuf.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sfs/bitmap.c b/code/lab8/kern/fs/sfs/bitmap.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sfs/bitmap.h b/code/lab8/kern/fs/sfs/bitmap.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sfs/sfs.c b/code/lab8/kern/fs/sfs/sfs.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sfs/sfs.h b/code/lab8/kern/fs/sfs/sfs.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sfs/sfs_fs.c b/code/lab8/kern/fs/sfs/sfs_fs.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sfs/sfs_inode.c b/code/lab8/kern/fs/sfs/sfs_inode.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sfs/sfs_io.c b/code/lab8/kern/fs/sfs/sfs_io.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sfs/sfs_lock.c b/code/lab8/kern/fs/sfs/sfs_lock.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/swap/swapfs.c b/code/lab8/kern/fs/swap/swapfs.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/swap/swapfs.h b/code/lab8/kern/fs/swap/swapfs.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sysfile.c b/code/lab8/kern/fs/sysfile.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/sysfile.h b/code/lab8/kern/fs/sysfile.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/vfs/inode.c b/code/lab8/kern/fs/vfs/inode.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/vfs/inode.h b/code/lab8/kern/fs/vfs/inode.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/vfs/vfs.c b/code/lab8/kern/fs/vfs/vfs.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/vfs/vfs.h b/code/lab8/kern/fs/vfs/vfs.h old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/vfs/vfsdev.c b/code/lab8/kern/fs/vfs/vfsdev.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/vfs/vfsfile.c b/code/lab8/kern/fs/vfs/vfsfile.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/vfs/vfslookup.c b/code/lab8/kern/fs/vfs/vfslookup.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/fs/vfs/vfspath.c b/code/lab8/kern/fs/vfs/vfspath.c old mode 100755 new mode 100644 diff --git a/code/lab8/kern/mm/kmalloc.c b/code/lab8/kern/mm/kmalloc.c index 6565626..ed3e29a 100644 --- a/code/lab8/kern/mm/kmalloc.c +++ b/code/lab8/kern/mm/kmalloc.c @@ -186,14 +186,9 @@ static void slob_free(void *block, int size) -void check_slob(void) { - cprintf("check_slob() success\n"); -} - void slob_init(void) { cprintf("use SLOB allocator\n"); - check_slob(); } inline void diff --git a/code/lab8/libs/dirent.h b/code/lab8/libs/dirent.h old mode 100755 new mode 100644 diff --git a/code/lab8/tools/grade.sh b/code/lab8/tools/grade.sh index b9bc485..920a344 100644 --- a/code/lab8/tools/grade.sh +++ b/code/lab8/tools/grade.sh @@ -314,11 +314,14 @@ quick_check() { ## kernel image osimg=$(make_print ucoreimg) +## sfs image +sfsimg=$(make_print sfsimg) + ## swap image swapimg=$(make_print swapimg) ## set default qemu-options -qemuopts="-hda $osimg -drive file=$swapimg,media=disk,cache=writeback" +qemuopts="-hda $osimg -drive file=$swapimg,media=disk,cache=writeback -drive file=$sfsimg,media=disk,cache=writeback" ## set break-function, default is readline brkfun=readline diff --git a/code/lab8/user/ls.c b/code/lab8/user/ls.c old mode 100755 new mode 100644 diff --git a/code/lab8/user/sh.c b/code/lab8/user/sh.c old mode 100755 new mode 100644