Checkpoint start syscall lab
This commit is contained in:
parent
808811f9f4
commit
57a861bea1
|
@ -215,41 +215,6 @@ initial file system. You just ran one of them: <tt>ls</tt>.
|
|||
to declare an argv.
|
||||
</ul>
|
||||
|
||||
<h2>System call tracing</h2>
|
||||
|
||||
<p>In this exercise you will modify the xv6 kernel to print out a line
|
||||
for each system call invocation. It is enough to print the name of the
|
||||
system call and the return value; you don't need to print the system
|
||||
call arguments.
|
||||
|
||||
<p>
|
||||
When you're done, you should see output like this when booting
|
||||
xv6:
|
||||
|
||||
<pre>
|
||||
...
|
||||
fork -> 2
|
||||
exec -> 0
|
||||
open -> 3
|
||||
close -> 0
|
||||
$write -> 1
|
||||
write -> 1
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
That's init forking and execing sh, sh making sure only two file descriptors are
|
||||
open, and sh writing the $ prompt. (Note: the output of the shell and the
|
||||
system call trace are intermixed, because the shell uses the write syscall to
|
||||
print its output.)
|
||||
|
||||
<p> Hint: modify the syscall() function in kernel/syscall.c.
|
||||
|
||||
<p>Run the programs you wrote in the previous exercises and inspect
|
||||
the system call trace. Are there many system calls? Which systems
|
||||
calls correspond to code in the applications you wrote above?
|
||||
|
||||
<p>Optional: print the system call arguments.
|
||||
|
||||
<h2>Optional: modify the shell</h2>
|
||||
|
||||
There are endless ways in which the shell could be extended. Here are
|
||||
|
|
Loading…
Reference in a new issue