Updated to use Bochs 2.6.11
[pintos-anon] / doc / userprog.texi
index 9d80e375669819c5a43da14ae4009c85f7d344f8..67af709bacc78df837ea7fc8a59eab4528728c49 100644 (file)
@@ -183,14 +183,16 @@ threads that have it open, until the last one closes it.  @xref{Removing
 an Open File}, for more information.
 @end itemize
 
 an Open File}, for more information.
 @end itemize
 
-You need to be able to create simulated disks.  The
-@command{pintos-mkdisk} program provides this functionality.  From the
-@file{userprog/build} directory, execute @code{pintos-mkdisk fs.dsk@tie{}2}.
-This command creates a 2 MB simulated disk named @file{fs.dsk}.  Then
-format the disk by passing @option{-f -q} on the kernel's command
-line: @code{pintos -f -q}.  The @option{-f} option causes the disk to be
-formatted, and @option{-q} causes Pintos to exit as soon as the format
-is done.
+You need to be able to create a simulated disk with a file system
+partition.  The @command{pintos-mkdisk} program provides this
+functionality.  From the @file{userprog/build} directory, execute
+@code{pintos-mkdisk filesys.dsk --filesys-size=2}.  This command
+creates a simulated disk named @file{filesys.dsk} that contains a @w{2
+MB} Pintos file system partition.  Then format the file system
+partition by passing @option{-f -q} on the kernel's command line:
+@code{pintos -f -q}.  The @option{-f} option causes the file system to
+be formatted, and @option{-q} causes Pintos to exit as soon as the
+format is done.
 
 You'll need a way to copy files in and out of the simulated file system.
 The @code{pintos} @option{-p} (``put'') and @option{-g} (``get'')
 
 You'll need a way to copy files in and out of the simulated file system.
 The @code{pintos} @option{-p} (``put'') and @option{-g} (``get'')
@@ -205,20 +207,19 @@ commands for copying files out of a VM are similar, but substitute
 
 Incidentally, these commands work by passing special commands
 @command{extract} and @command{append} on the kernel's command line and copying
 
 Incidentally, these commands work by passing special commands
 @command{extract} and @command{append} on the kernel's command line and copying
-to and from a special simulated ``scratch'' disk.  If you're very
+to and from a special simulated ``scratch'' partition.  If you're very
 curious, you can look at the @command{pintos} script as well as
 @file{filesys/fsutil.c} to learn the implementation details.
 
 curious, you can look at the @command{pintos} script as well as
 @file{filesys/fsutil.c} to learn the implementation details.
 
-Here's a summary of how to create and format a disk, copy the
-@command{echo} program into the new disk, and then run @command{echo},
-passing argument @code{x}.  (Argument passing won't work until
-you implemented it.)  It assumes
-that you've already built the
-examples in @file{examples} and that the current directory is
-@file{userprog/build}:
+Here's a summary of how to create a disk with a file system partition,
+format the file system, copy the @command{echo} program into the new
+disk, and then run @command{echo}, passing argument @code{x}.
+(Argument passing won't work until you implemented it.)  It assumes
+that you've already built the examples in @file{examples} and that the
+current directory is @file{userprog/build}:
 
 @example
 
 @example
-pintos-mkdisk fs.dsk 2
+pintos-mkdisk filesys.dsk --filesys-size=2
 pintos -f -q
 pintos -p ../../examples/echo -a echo -- -q
 pintos -q run 'echo x'
 pintos -f -q
 pintos -p ../../examples/echo -a echo -- -q
 pintos -q run 'echo x'
@@ -227,19 +228,20 @@ pintos -q run 'echo x'
 The three final steps can actually be combined into a single command:
 
 @example
 The three final steps can actually be combined into a single command:
 
 @example
-pintos-mkdisk fs.dsk 2
+pintos-mkdisk filesys.dsk --filesys-size=2
 pintos -p ../../examples/echo -a echo -- -f -q run 'echo x'
 @end example
 
 If you don't want to keep the file system disk around for later use or
 inspection, you can even combine all four steps into a single command.
 pintos -p ../../examples/echo -a echo -- -f -q run 'echo x'
 @end example
 
 If you don't want to keep the file system disk around for later use or
 inspection, you can even combine all four steps into a single command.
-The @code{--fs-disk=@var{n}} option creates a temporary disk
+The @code{--filesys-size=@var{n}} option creates a temporary file
+system partition
 approximately @var{n} megabytes in size just for the duration of the
 @command{pintos} run.  The Pintos automatic test suite makes extensive
 use of this syntax:
 
 @example
 approximately @var{n} megabytes in size just for the duration of the
 @command{pintos} run.  The Pintos automatic test suite makes extensive
 use of this syntax:
 
 @example
-pintos --fs-disk=2 -p ../../examples/echo -a echo -- -f -q run 'echo x'
+pintos --filesys-size=2 -p ../../examples/echo -a echo -- -f -q run 'echo x'
 @end example
 
 You can delete a file from the Pintos file system using the @code{rm
 @end example
 
 You can delete a file from the Pintos file system using the @code{rm
@@ -259,7 +261,7 @@ processor's floating-point unit when switching threads.
 
 The @file{src/examples} directory contains a few sample user
 programs.  The @file{Makefile} in this directory
 
 The @file{src/examples} directory contains a few sample user
 programs.  The @file{Makefile} in this directory
-compiles the provided examples, and you can edit it
+compiles the provided examples, and you can edit it to
 compile your own programs as well.  Some of the example programs will
 only work once projects 3 or 4 have been implemented.
 
 compile your own programs as well.  Some of the example programs will
 only work once projects 3 or 4 have been implemented.
 
@@ -272,11 +274,11 @@ for Pintos.  (We've provided compilers and linkers that should do just
 fine.)
 
 You should realize immediately that, until you copy a
 fine.)
 
 You should realize immediately that, until you copy a
-test program to the simulated disk, Pintos will be unable to do
+test program to the simulated file system, Pintos will be unable to do
 useful work.  You won't be able to do
 useful work.  You won't be able to do
-interesting things until you copy a variety of programs to the disk.
-You might want to create a clean reference disk and copy that
-over whenever you trash your @file{fs.dsk} beyond a useful state,
+interesting things until you copy a variety of programs to the file system.
+You might want to create a clean reference file system disk and copy that
+over whenever you trash your @file{filesys.dsk} beyond a useful state,
 which may happen occasionally while debugging.
 
 @node Virtual Memory Layout
 which may happen occasionally while debugging.
 
 @node Virtual Memory Layout
@@ -369,7 +371,7 @@ data segment can be adjusted with a system call, but you will not have
 to implement this.
 
 The code segment in Pintos starts at user virtual address
 to implement this.
 
 The code segment in Pintos starts at user virtual address
-@t{0x08084000}, approximately 128 MB from the bottom of the address
+@t{0x08048000}, approximately 128 MB from the bottom of the address
 space.  This value is specified in @bibref{SysV-i386} and has no deep
 significance.
 
 space.  This value is specified in @bibref{SysV-i386} and has no deep
 significance.
 
@@ -598,8 +600,8 @@ programs only.)  System call numbers for each system call are defined in
 @file{lib/syscall-nr.h}:
 
 @deftypefn {System Call} void halt (void)
 @file{lib/syscall-nr.h}:
 
 @deftypefn {System Call} void halt (void)
-Terminates Pintos by calling @func{power_off} (declared in
-@file{threads/init.h}).  This should be seldom used, because you lose
+Terminates Pintos by calling @func{shutdown_power_off} (declared in
+@file{devices/shutdown.h}).  This should be seldom used, because you lose
 some information about possible deadlock situations, etc.
 @end deftypefn
 
 some information about possible deadlock situations, etc.
 @end deftypefn
 
@@ -852,7 +854,7 @@ modified by the reference solution.
 
 @item The kernel always panics when I run @code{pintos -p @var{file} -- -q}.
 
 
 @item The kernel always panics when I run @code{pintos -p @var{file} -- -q}.
 
-Did you format the disk (with @samp{pintos -f})?
+Did you format the file system (with @samp{pintos -f})?
 
 Is your file name too long?  The file system limits file names to 14
 characters.  A command like @samp{pintos -p ../../examples/echo -- -q}
 
 Is your file name too long?  The file system limits file names to 14
 characters.  A command like @samp{pintos -p ../../examples/echo -- -q}
@@ -873,6 +875,8 @@ Files are written under the name you refer to them, by default, so in
 this case the file copied in would be named @file{../file}.  You
 probably want to run @code{pintos -p ../file -a file --} instead.
 
 this case the file copied in would be named @file{../file}.  You
 probably want to run @code{pintos -p ../file -a file --} instead.
 
+You can list the files in your file system with @code{pintos -q ls}.
+
 @item All my user programs die with page faults.
 
 This will happen if you haven't implemented argument passing
 @item All my user programs die with page faults.
 
 This will happen if you haven't implemented argument passing
@@ -920,7 +924,7 @@ Modify @file{src/examples/Makefile}, then run @command{make}.
 
 @item Can I run user programs under a debugger?
 
 
 @item Can I run user programs under a debugger?
 
-Yes, with some limitations.  @xref{Debugging User Programs}.
+Yes, with some limitations.  @xref{GDB}.
 
 @item What's the difference between @code{tid_t} and @code{pid_t}?
 
 
 @item What's the difference between @code{tid_t} and @code{pid_t}?