Ben Pfaff [Sun, 19 Jun 2005 03:20:25 +0000 (03:20 +0000)]
Make tests public. Rewrite most tests. Add tests.
Major revisions to documentation and assignments.
Implement good solutions to all assignments.
Rewrite pintos script, fsutils, and Pintos command line parsing to
support put, get of multiple files.
New pintos-mkdisk script for what pintos doesn't do anymore.
Make backtrace more friendly.
Major revisions to base file system.
Get rid of names passed to synch primitives.
Break intr_register() into intr_register_ext() and intr_register_int().
Revise bitmap code.
Add console_locked_by_current_thread() and use it.
munmap() has void return value (in lib/user/syscall.c).
Update expected tools versions.
Document use of qemu.
Add realloc() function to malloc implementation.
Add is_user_vaddr() and is_kernel_vaddr(), use in mmu.h.
Add sema_try_down(), lock_try_acquire().
Add memory barrier.
Extend default time slice to 4 ticks and calculate time slices
properly (don't just switch whenever timer_ticks() % 4 == 0).
Fix writing to palloc'd memory without checking against null
in pagedir_create().
Invalidate TLB when we mark pages not accessed or not dirty.
Revise other pagedir code.
Make load() less nasty-looking.
Ben Pfaff [Thu, 7 Apr 2005 18:00:06 +0000 (18:00 +0000)]
In idle(), "sti; hlt" must be atomic or we can waste time waiting for
the next clock tick.
Fix inspired by Linus Torvalds in message
<Pine.LNX.4.58.0504071000450.28951@ppc970.osdl.org>.
Ben Pfaff [Wed, 6 Apr 2005 18:47:14 +0000 (18:47 +0000)]
Always use a custom linker script, to avoid oddities in the default.
Put linker scripts in lib/user.
Eliminate redundant dependency in Makefile.userprog.
Document change.
Ben Pfaff [Thu, 31 Mar 2005 04:58:27 +0000 (04:58 +0000)]
Move problem 1-2 (join) into project 2 as the "wait" system call.
Update the documentation, solutions, grading scripts, and regression
tests.
In execute_thread(), rephrase the code slightly.
Move process_activate() call from execute_thread() to load() to remove
potential race condition that students and TAs found confusing.
Add memory barrier in process_exit().
Ben Pfaff [Thu, 17 Mar 2005 18:52:52 +0000 (18:52 +0000)]
When run.out is missing in &grade_test, just return an error that
preparation failed, instead of dying. This can happen legitimately
when a `pintos put' fails.
Ben Pfaff [Wed, 19 Jan 2005 18:39:39 +0000 (18:39 +0000)]
If the kernel image gets too big, "cmp ebx, KERNEL_LOAD_PAGES*8 + 1"
assembles into 3 more bytes, which causes the image to be too big.
This reduces the length of the panic message to compensate.
Ben Pfaff [Tue, 18 Jan 2005 17:26:47 +0000 (17:26 +0000)]
In all the variants of the basic test for part 1-1, release the lock
when we're done with it. This shouldn't be necessary, but not
releasing the lock is a corner case that we don't necessarily want the
students to have to handle.
Ben Pfaff [Mon, 10 Jan 2005 08:14:56 +0000 (08:14 +0000)]
Parse PINTOSOPTS environment variable as extra command-line options.
exit 1 on get, put.
Avoid Perl warnings when cwd doesn't contain a project name.
exit 1 for qemu, gsx.
Write serial output to pintos.out under gsx.
Ben Pfaff [Mon, 10 Jan 2005 07:18:03 +0000 (07:18 +0000)]
Fix order of edi, esi, ebp, ebx in switch_threads_frame. Doesn't
matter because they're never used in the C code, but it's good to have
them correct. Thanks to Howie Xu <xuhao@stanford.edu> for reporting
this bug.