Ben Pfaff [Thu, 4 Dec 2008 05:41:18 +0000 (21:41 -0800)]
Rewrite the I/O port code.
The contents of these functions was derived from code used in the
Massachusetts Institute of Technology's 6.828 advanced operating
systems course.
I deleted the contents of these functions and then rewrote them from
scratch without reference to the earlier code, working only from the
function comments (which I wrote earlier).
Godmar Back [Fri, 14 Nov 2008 06:13:54 +0000 (01:13 -0500)]
added section "Accessing User Memory", including explanation of why
pinning is necessary
added FAQ for why stack growth may cause page faults above stack pointer
minor edits to other sections
Godmar Back [Thu, 13 Nov 2008 02:17:21 +0000 (21:17 -0500)]
added btthreadall to dump all threads
added loadusersymbols to load user symbols from file
updated documentation to reflect behavior of qemu's and bochs's gdbstubs
Ben Pfaff [Wed, 12 Nov 2008 06:19:01 +0000 (22:19 -0800)]
Implement a proper block layer with partition support.
This is in preparation for introducing new block devices, in
particular USB storage-based block devices so that Pintos can boot
from USB memory sticks on notebook and desktop PCs.
This block layer was inspired by one from Anthony Romano
<chz@vt.edu> but it has been extensively (perhaps entirely) rewritten.
Thus, bugs must certainly be blamed on the committer.
Ben Pfaff [Mon, 10 Nov 2008 00:19:48 +0000 (16:19 -0800)]
Get rid of power_off_when_done global variable.
This global variable was not named according to the convention that a
global variable name start with its module name. Furthermore, its usage
was somewhat scattered across the source tree.
This commit introduces new functions shutdown() and shutdown_configure()
to improve the situation.
Ben Pfaff [Sun, 9 Nov 2008 23:21:21 +0000 (15:21 -0800)]
Allow Bochs users to reboot by clicking the "user" button.
The "user_shortcut" Bochs option allows specifying a key combination to
send to the VM when the user clicks on the "user" button in the Bochs
headerbar.
From Godmar, crossported from his usb-integration-aug08 branch.
Ben Pfaff [Sun, 9 Nov 2008 23:22:25 +0000 (15:22 -0800)]
Use 9600 bps for Pintos serial, to match the speed used by the loader.
It is important that Pintos and its loader use the same serial speed, so
that a terminal program connected to a serial port can be set to a sane
speed. The ideal choice would be 115200 bps, for maximum speed, but the
Pintos loader uses the BIOS to do serial output, and the BIOS supports a
maximum speed of 9600 bps.
From Godmar, crossported from his usb-integration-aug08 branch.
Ben Pfaff [Fri, 7 Nov 2008 05:54:04 +0000 (21:54 -0800)]
Eliminate user_page_limit global symbol.
The name "user_page_limit" did not follow the naming convention, which
stated that its name should start with palloc_ since it is defined in
palloc.c. But it was only used in one function, so it was better off
as a function parameter anyhow.
Godmar Back [Wed, 27 Aug 2008 14:34:24 +0000 (14:34 +0000)]
removed 'address' option for Bochs.
It makes Bochs > 2.2.6 fail with "[MEM0 ] ROM: System BIOS must end at 0xfffff"
and, according to http://www.nabble.com/Strange-error-message-when-bringing-up-a-CVS-build-td7532679.html
isn't even necessary for 2.2.6
Ben Pfaff [Thu, 21 Aug 2008 04:49:45 +0000 (04:49 +0000)]
Use --build-id=none to avoid build-id sections on FC8.
These build-id sections cause the Pintos ELF loader to reject
binaries. The preferred way to eliminate them would be to add
/DISCARD/ : { *(.note.gnu.build-id) }
to the linker script, but (as reported by Godmar Back) this causes a
segmentation fault in ld, as reported in a bug filed at:
http://sourceware.org/bugzilla/show_bug.cgi?id=5025
Ben Pfaff [Sat, 26 Jan 2008 16:43:15 +0000 (16:43 +0000)]
Use -fno-stack-protector with GCC versions that support it, to fix a
linker error on platform on which -fstack-protector is default, such
as recent versions of Ubuntu.
Godmar Back [Wed, 9 Jan 2008 19:48:05 +0000 (19:48 +0000)]
- moved all instructions that related to local CVS/group setup in localcvsinstructions.texi
- added variables recommendsourceforge, recommendvnc, and recommendcygwin to include/exclude
recommendations to use sourceforge, VNC, and Cygwin, resp.
Godmar Back [Sat, 17 Nov 2007 09:42:26 +0000 (09:42 +0000)]
- add localsettings.texi which contains Stanford-local macros and variables
- threads.texi - removed comment about being welcome to implement priority donation for semaphores
- vm.texi - added FAQ about how to resume. It truely is a FAQ, at least here at Tech.
- debug.texi - updated Bochs build instructions
Ben Pfaff [Mon, 23 Apr 2007 00:05:33 +0000 (00:05 +0000)]
Correctly initialize the esp0 pointer in the TSS for the initial
kernel thread. Shouldn't actually matter in practice, because that
pointer is only used on a user->kernel transition, and the initial
kernel thread never runs a user process.
Ben Pfaff [Thu, 11 Jan 2007 08:02:13 +0000 (08:02 +0000)]
Set VERBOSE to empty string by default, which prevents an environment
variable named VERBOSE from causing trouble but still allows it to be
overridden by the user on the command line. (Some of the Stanford
machines set VERBOSE=yes in the environment by default on log-in.)
Ben Pfaff [Mon, 11 Dec 2006 20:40:20 +0000 (20:40 +0000)]
Parse command-line options much earlier, so that thread_mlfqs is
initialized before thread_init() gets hold of it.
Also allow console output much earlier, by doing initialization
whenever we call into it first and by only trying to take the console
lock after threads have been initialized.
Don't try to take the console lock after the kernel panics, to avoid
getting nailed so hard by bugs in lock_acquire().