X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fuserprog.texi;h=884b757c59bafdc56d1990ecc7e67cedc8814c8d;hb=8b4b30e474d03688b62ad2ccb6c1ec162c6d2a8d;hp=62e29a6bcd0a873bd8fcb4f039caf14319cc763c;hpb=9d6ad9a479ddae9628dc2d45862f9281986c430b;p=pintos-anon diff --git a/doc/userprog.texi b/doc/userprog.texi index 62e29a6..884b757 100644 --- a/doc/userprog.texi +++ b/doc/userprog.texi @@ -140,9 +140,10 @@ represented as a file, the number of files that may be created is also limited. @item -File data is allocated as a single extent, so that external -fragmentation can become a serious problem as a file system is used over -time. +File data is allocated as a single extent, that is, data in a single +file must occupy a contiguous range of sectors on disk. External +fragmentation can therefore become a serious problem as a file system is +used over time. @item No subdirectories. @@ -159,6 +160,7 @@ provided in any case. However one important feature is included: @itemize @bullet +@item Unix-like semantics for filesys_remove() are implemented. That is, if a file is open when it is removed, its blocks are not deallocated and it may still be accessed by the @@ -403,9 +405,9 @@ conditions (usually errors). @item SYS_exec @itemx pid_t exec (const char *@var{cmd_line}) Runs the executable whose name is given in @var{cmd_line}, passing any -given arguments, and returns the new process's program id (pid). If -there is an error loading this program, may return pid -1, which -otherwise should not be a valid id number. +given arguments, and returns the new process's program id (pid). Must +return pid -1, which otherwise should not be a valid program id, if +there is an error loading this program. @item SYS_join @itemx int join (pid_t @var{pid}) @@ -454,7 +456,13 @@ than end of file). Fd 0 reads from the keyboard using @itemx int write (int @var{fd}, const void *@var{buffer}, unsigned @var{size}) Write @var{size} bytes from @var{buffer} to the open file @var{fd}. Returns the number of bytes actually written, or -1 if the file could -not be written. Fd 1 writes to the console. +not be written. + +Fd 1 writes to the console. Your code to write to the console should +write all of @var{buffer} in one call to @func{putbuf}, at least as +long as @var{size} is not bigger than a few hundred bytes. Otherwise, +lines of text output by different processes may end up interleaved on +the console, confusing both human readers and our grading scripts. @item SYS_seek @itemx void seek (int @var{fd}, unsigned @var{position})