Ben Pfaff [Sat, 12 Feb 2011 18:04:27 +0000 (10:04 -0800)]
thread: Do not disable interrupts unnecessarily while initializing stack.
Reported by Francis Russell <fpr02@doc.ic.ac.uk>.
Ben Pfaff [Sat, 12 Feb 2011 18:03:53 +0000 (10:03 -0800)]
thread: Properly protect 'all_list' around insertion.
Reported by Francis Russell <fpr02@doc.ic.ac.uk>.
Ben Pfaff [Thu, 16 Dec 2010 05:42:12 +0000 (21:42 -0800)]
squish-pty: Flush buffered data from pty to stdout when pty's slave closed
When the slave side of the pty is closed, the "read" system call returns
EIO. In this situation, squish-pty failed to flush any output that it
already had in its buffer (up to 16 bytes) to stdout. This could cause
the "Powering off..." message printed by Pintos just before exiting to
be missing from the output.
This usually didn't happen, because there are two other exit paths from
the relay() function that does most of squish-pty's work. The most common
exit path was (evidently) the one which detected that the child process
had died, which did properly flush the buffer. (The third path was wrong
too, and this patch fixes that one too.)
This patch fixes the problem by using a single exit path from relay() that
always reads any remaining input from the pty (if it is open) and flushes
it to stdout.
Reported by Borja Sotomayor <borja@cs.uchicago.edu>.
Ben Pfaff [Sat, 11 Dec 2010 17:55:04 +0000 (09:55 -0800)]
free-map: Replace U+00A0 "hard spaces" by ordinary ASCII spaces.
Reported by Borja Sotomayor <borja@cs.uchicago.edu>.
Joseph Huang [Wed, 5 May 2010 16:23:55 +0000 (09:23 -0700)]
block: Avoid accessing past the end of the block_by_role array.
Ben Pfaff [Sat, 1 May 2010 18:20:14 +0000 (11:20 -0700)]
Make.config: Use a different method to detect --build-id support.
Some versions of ld accept /dev/null as a valid input file. Others will
not. The latter versions will give false negatives for --buil-id support,
which breaks linking of Pintos userspace programs. So use a different
method, that I hope will be more reliable, to detect --build-id support.
Reported by Joseph Huang <jdhuang@stanford.edu>.
Ben Pfaff [Thu, 7 Jan 2010 17:26:11 +0000 (09:26 -0800)]
pintos: Make sure to print buffered data at end of input.
Here, $buf might have some data in it that has not yet been printed, but
we were discarding it (and trying to read more) without printing it.
(In Perl, "do" ensures that the inner block runs at least once; without
"do" the condition is evaluated first.)
Ben Pfaff [Tue, 26 Jan 2010 17:12:50 +0000 (09:12 -0800)]
doc: Fix references to power_off() to refer to correct function and file name.
Reported by Nathaniel Hardison <hardison@stanford.edu>.
Ben Pfaff [Thu, 7 Jan 2010 06:12:36 +0000 (22:12 -0800)]
Support newer versions of QEMU, which do not have the -no-kqemu option.
Thanks to David Mazieres for reporting the problem and the fix.
Ben Pfaff [Sat, 14 Nov 2009 04:22:41 +0000 (20:22 -0800)]
Fix typo in comment describing free_map_allocate().
Thanks to Godmar Back for reporting the problem and for the fix.
Ben Pfaff [Sat, 24 Oct 2009 19:10:54 +0000 (12:10 -0700)]
Use round-toward-0 instead of round-to-nearest in fixed-point example.
Rounding to nearest raises a host of issues that we don't want students
to worry about.
Suggested by Godmar Back.
Ben Pfaff [Tue, 20 Jan 2009 06:32:57 +0000 (22:32 -0800)]
Remove unnecessary optimization barrier.
The compiler can't optimize out the load of "ticks" here because
it can't look into intr_disable() and intr_set_level() and know that
they don't modify "ticks".
Thanks to Martin <mfleener@stanford.edu> for pointing this out.
Ben Pfaff [Mon, 22 Dec 2008 01:37:44 +0000 (17:37 -0800)]
Print a message instead of panicking upon an unexpected interrupt.
We cannot expect that we know in detail ever interrupt that can occur
on real hardware, so we must cope with exceptional cases a little
better.
Ben Pfaff [Thu, 4 Dec 2008 05:56:59 +0000 (21:56 -0800)]
Avoid long pauses on serial timeout on boot on physical hardware.
The Pintos loader writes status to the serial port as well as the
VGA console, but this doesn't work out so well on at least some
real hardware when nothing is connected to the serial port: each
character can take a second or so to display because the BIOS
waits for a serial timeout each time. So, on the first serial
timeout, replace the "int $0x14" call by a pair of no-ops.
The rest of the changes are part of the struggle not to exceed
the maximum loader size.
Ben Pfaff [Thu, 4 Dec 2008 05:42:42 +0000 (21:42 -0800)]
Remove MIT copyright notice and license.
Pintos used to contain a loader and I/O functions derived from MIT
code, but this has now been entirely eliminated, so there is no
longer any reason to retain the MIT copyright notice or license.
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 [Fri, 14 Nov 2008 02:30:41 +0000 (21:30 -0500)]
fixed backtrace to work with -O (now conforms to
http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html )
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 04:07:40 +0000 (20:07 -0800)]
Make backtraces slightly more reliable.
We now ignore pointers that are not null but still clearly wild.
We could check that there's really a valid PDE and PTE (I think Linux
does this) but it would take more code and be ugly.
Ben Pfaff [Mon, 10 Nov 2008 04:02:19 +0000 (20:02 -0800)]
Add PC speaker driver and connect it to '\a' in the VGA console.
Based on code from Anthony Romano <chz@vt.edu> but with extensive changes.
Ben Pfaff [Sun, 9 Nov 2008 23:56:05 +0000 (15:56 -0800)]
Rename ram_pages to init_ram_pages.
This makes it conform to the Pintos convention that a global symbol name
begin with its module's name.
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:51:01 +0000 (15:51 -0800)]
Remove prototypes for removed functions power_off(), reboot().
Ben Pfaff [Sun, 9 Nov 2008 23:42:02 +0000 (15:42 -0800)]
Ignore files produced by "makeinfo".
Ben Pfaff [Sun, 9 Nov 2008 23:40:18 +0000 (15:40 -0800)]
Mark shutdown_reboot() and shutdown_power_off() as NO_RETURN.
Also, make shutdown_reboot() actually behave that way, by trying to reboot
forever instead of giving up after some number of tries.
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:35 +0000 (15:22 -0800)]
Terminate the backtrace that debug_backtrace() would output.
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 [Sun, 9 Nov 2008 19:41:18 +0000 (11:41 -0800)]
Move reboot() and power_off() to new file, and rename to fit convention.
Godmar Back [Sat, 8 Nov 2008 04:48:13 +0000 (23:48 -0500)]
added note regarding console lock
Ben Pfaff [Sat, 8 Nov 2008 01:23:09 +0000 (17:23 -0800)]
Correct comment describing list_remove() behavior.
Thanks to Godmar for pointing out the problem.
Ben Pfaff [Sat, 8 Nov 2008 01:12:23 +0000 (17:12 -0800)]
Add FAQ item to explain doubled test names in output.
Suggested by Godmar.
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.
Found by Godmar with his process-linker-map.pl.
Ben Pfaff [Fri, 7 Nov 2008 05:31:30 +0000 (21:31 -0800)]
Don't make interrupt stubs global symbols.
The stubs are only referenced within intr-stubs.S so there is no reason
for them to be exported.
Found with Godmar's process-linker-map.pl.
Ben Pfaff [Fri, 7 Nov 2008 05:19:34 +0000 (21:19 -0800)]
Rename base_page_dir to init_page_dir.
This makes its name fit the convention that the file name is used as
a prefix for global symbol names.
Found by Godmar with his process-linker-map.pl script.
Ben Pfaff [Fri, 7 Nov 2008 05:55:33 +0000 (21:55 -0800)]
Rename schedule_tail() to thread_schedule_tail().
This makes its name fit the convention that the file name is used as
a prefix for global symbol names.
Found by Godmar with his process-linker-map.pl script.
Ben Pfaff [Fri, 7 Nov 2008 05:12:12 +0000 (21:12 -0800)]
Make kernel_pool, user_pool static, since they are used only in palloc.c
Found by Godmar with his process-linker-map.pl.
Ben Pfaff [Fri, 7 Nov 2008 05:11:26 +0000 (21:11 -0800)]
Rename .cvsignore files to .gitignore.
Godmar Back [Wed, 5 Nov 2008 04:53:26 +0000 (23:53 -0500)]
removed trailing whitespace
Godmar Back [Wed, 5 Nov 2008 04:31:45 +0000 (23:31 -0500)]
clarified specification for wait() system call
Godmar Back [Fri, 17 Oct 2008 03:26:23 +0000 (03:26 +0000)]
added documentation for thread_foreach functions
Ben Pfaff [Thu, 16 Oct 2008 22:49:48 +0000 (22:49 +0000)]
Always make the scratch disk an even multiple of a cylinder in size.
The pintos script tried to do so before but "print" and "syswrite"
are buffered differently and interfere with one another.
Thanks to Karan Misra <kmisra@stanford.edu> for pointing out the
problem and confirming the solution.
Godmar Back [Wed, 27 Aug 2008 16:52:04 +0000 (16:52 +0000)]
- added thread_foreach
- added debug_backtrace_all
- updated P1 solution to take advantage of this new code
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
Godmar Back [Wed, 27 Aug 2008 11:50:49 +0000 (11:50 +0000)]
cleaned up comments for reboot code and adopted GNU coding standards
Ben Pfaff [Tue, 26 Aug 2008 03:05:05 +0000 (03:05 +0000)]
Reboot when Ctrl+Alt+Del is pressed.
Suggested by Anthony Romano.
Implementation with assistance from and reviewed by Godmar Back.
Ben Pfaff [Mon, 25 Aug 2008 03:50:49 +0000 (03:50 +0000)]
Improve comments.
Suggested by Godmar Back.
Ben Pfaff [Sun, 24 Aug 2008 17:16:32 +0000 (17:16 +0000)]
New option -r to reboot the VM after actions are complete.
From Godmar Back, with minor tweaks.
Ben Pfaff [Sun, 24 Aug 2008 04:31:40 +0000 (04:31 +0000)]
Use standard POSIX "ustar" format for the scratch disk.
This should make it easier to work with scratch disks directly,
instead of through the "pintos" script.
With naming suggestion from Godmar Back.
Ben Pfaff [Sat, 23 Aug 2008 03:52:54 +0000 (03:52 +0000)]
RTC support.
Adapted from Anthony Romano's patch with the following changes:
* Style adjusted to fit rest of Pintos.
* Don't modify the RTC registers. It shouldn't be necessary.
We shouldn't need any initialization in fact.
* Drop rtc_set_time stub.
* Do handle time advancing while reading the RTC registers in
rtc_get_time, using the strategy from Linux.
* Fix leap year handling: adding (year / 4) * 24 * 60 * 60 is
wrong for first 2 months of a leap year; the test (year & 4)
should be (year % 4).
* Simplify month code.
* Drop enable_rtc_int, disable_rtc_int, rtc_updating that are
not needed.
* Update documentation.
Ben Pfaff [Sat, 23 Aug 2008 03:44:32 +0000 (03:44 +0000)]
Use macros for 8259A PIC registers, instead of writing them literally.
Based on patch from Anthony Romano <chz@vt.edu>, so update authorship
information given that Anthony is going to be contributing quite a
bit.
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, 2 Aug 2008 11:30:43 +0000 (11:30 +0000)]
Fix asm constraints to avoid SI, DI for byte and word access.
Thanks to Ed Lyle Karrels <karrels@stanford.edu> for reporting the
problem.
Ben Pfaff [Fri, 18 Jul 2008 01:13:29 +0000 (01:13 +0000)]
Fix bug in --sim and --debug options reported by Bob Lantz.
Ben Pfaff [Thu, 3 Jul 2008 20:10:32 +0000 (20:10 +0000)]
Specify rounding for priority calculations.
Pointed out by Ed Karrels <karrels@stanford.edu>.
Ben Pfaff [Thu, 3 Jul 2008 19:31:27 +0000 (19:31 +0000)]
No longer recommend SourceForge.
Really it seems like a bad idea for students.
Ben Pfaff [Thu, 3 Jul 2008 19:30:05 +0000 (19:30 +0000)]
Make recent Texinfo accept devel.texi.
Ben Pfaff [Mon, 17 Mar 2008 11:56:48 +0000 (11:56 +0000)]
Wording improvements, from "Valentin I. Spitkovsky"
<vspitkovsky@yahoo.com>.
Ben Pfaff [Thu, 21 Feb 2008 04:25:17 +0000 (04:25 +0000)]
Reference to threads/exception.c should be to userprog/exception.c.
Thanks to Matt Jones <mkjones@stanford.edu> for reporting this bug.
Ben Pfaff [Thu, 14 Feb 2008 08:17:14 +0000 (08:17 +0000)]
Explain why a null pointer sentinel must be pushed on the stack.
From Valentin I. Spitkovsky <vspitkovsky@yahoo.com>.
Ben Pfaff [Thu, 14 Feb 2008 08:12:21 +0000 (08:12 +0000)]
Grammar fixes.
From Valentin I. Spitkovsky <vspitkovsky@yahoo.com>.
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.
Ben Pfaff [Thu, 24 Jan 2008 18:49:45 +0000 (18:49 +0000)]
Fix typos.
Reported by Valentin I. Spitkovsky <vspitkovsky@yahoo.com>.
Ben Pfaff [Thu, 24 Jan 2008 18:48:41 +0000 (18:48 +0000)]
Fix reversal of "acquire" and "release" in Locks section.
Reported by Valentin I. Spitkovsky <vspitkovsky@yahoo.com>.
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
Godmar Back [Fri, 16 Nov 2007 02:18:35 +0000 (02:18 +0000)]
added IGNORE_USER_FAULTS clause to match specification
Godmar Back [Sun, 23 Sep 2007 15:40:23 +0000 (15:40 +0000)]
fixed typo: "pass" should be "fail"
Ben Pfaff [Fri, 18 May 2007 23:23:51 +0000 (23:23 +0000)]
Clean some more files.
Ben Pfaff [Mon, 7 May 2007 23:02:07 +0000 (23:02 +0000)]
Fix warning.
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.
Reported by Godmar Back.
Ben Pfaff [Mon, 2 Apr 2007 08:10:25 +0000 (08:10 +0000)]
Ignore tags and cscope files.
Ben Pfaff [Mon, 2 Apr 2007 07:23:22 +0000 (07:23 +0000)]
Improve comment on thread_unblock().
Suggested by Godmar Back.
Ben Pfaff [Sat, 31 Mar 2007 14:40:52 +0000 (14:40 +0000)]
Fix bugs in -j and -r options reported by Godmar Back.
Ben Pfaff [Sat, 31 Mar 2007 14:40:29 +0000 (14:40 +0000)]
Fix bug in jitter reported by Godmar Back (BIOS wouldn't finish
initializing).
Ben Pfaff [Sat, 31 Mar 2007 14:12:03 +0000 (14:12 +0000)]
Fix specification of "write" system call to match the file system
implementation and the tests.
Ben Pfaff [Sat, 31 Mar 2007 13:49:21 +0000 (13:49 +0000)]
Describe cscope.
Ben Pfaff [Sat, 31 Mar 2007 12:26:45 +0000 (12:26 +0000)]
Delete question about pwd.c program, as agreed with Godmar earlier.
Ben Pfaff [Sat, 24 Mar 2007 01:26:18 +0000 (01:26 +0000)]
Improve wording.
From Godmar Back.
Ben Pfaff [Sat, 24 Mar 2007 01:12:10 +0000 (01:12 +0000)]
Explain the semantics of exec in more detail.
From Godmar Back.
Ben Pfaff [Sat, 24 Mar 2007 01:04:19 +0000 (01:04 +0000)]
Add helpful comment.
From Godmar Back.
Ben Pfaff [Sat, 24 Mar 2007 01:02:19 +0000 (01:02 +0000)]
Add "cscope" target.
Ben Pfaff [Sat, 24 Mar 2007 01:01:06 +0000 (01:01 +0000)]
Rename execute_thread() to start_process().
Thanks to Godmar Back for pointing out that it could be better named.
Ben Pfaff [Sat, 24 Mar 2007 00:56:57 +0000 (00:56 +0000)]
Clarify that create and remove work on files, not on file descriptors.
Thanks to Godmar Back for pointing out the need.
Ben Pfaff [Thu, 8 Mar 2007 03:56:24 +0000 (03:56 +0000)]
Fix bug in *-persistence tests when prerequisites fail.
Reported by Tanvi Vyas <tanvi@stanford.edu>.
Ben Pfaff [Wed, 7 Mar 2007 14:52:06 +0000 (14:52 +0000)]
Fix inconstiency in recent_cpu update description.
Ben Pfaff [Sun, 11 Feb 2007 04:45:07 +0000 (04:45 +0000)]
Fix typo.
Ben Pfaff [Sun, 11 Feb 2007 04:44:25 +0000 (04:44 +0000)]
Clarify description of "wait" syscall. Thanks to Evan Kutter
<ejk@stanford.edu> for describing the issue.
Ben Pfaff [Tue, 6 Feb 2007 21:09:10 +0000 (21:09 +0000)]
Improve example for "Can a thread's priority change while it is on the
ready queue?" FAQ. From Godmar Back.
Godmar Back [Tue, 6 Feb 2007 06:44:01 +0000 (06:44 +0000)]
added patch to make bochs work with gdb 6.5
Ben Pfaff [Sun, 28 Jan 2007 04:21:55 +0000 (04:21 +0000)]
Fix order of checks on load average.
From a CS140 student, via Ben Sapp.
Ben Pfaff [Sun, 21 Jan 2007 10:29:26 +0000 (10:29 +0000)]
Add i86pc to unames detected as x86 (used by Solaris).
From Michael Gregory <mpgreg@stanford.edu>.
Godmar Back [Sat, 13 Jan 2007 14:39:41 +0000 (14:39 +0000)]
fixed grammar/typo
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 [Thu, 11 Jan 2007 07:48:07 +0000 (07:48 +0000)]
Remove unnecessary semicolon that gives GNU make 3.80 fits.
Ben Pfaff [Thu, 11 Jan 2007 06:57:40 +0000 (06:57 +0000)]
Don't call bx_gdbstub_exception when we're not compiling the gdb stub.
Thanks to Godmar Back for pointing this out.
Ben Pfaff [Tue, 9 Jan 2007 17:46:42 +0000 (17:46 +0000)]
Add -MF to GCC invocation to make ccache happy on Fedora Core 6.
Godmar Back [Mon, 8 Jan 2007 09:55:17 +0000 (09:55 +0000)]
clarified stack limit issue and removed comment about first instruction faulting in stack page