Due: Fri, 06 Apr 2018 11:00:00 -0700
Your first task is to 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.
When you’re done, you should see output like this when booting xv6:
...
fork -> 2
exec -> 0
open -> 3
close -> 0
$write -> 1
write -> 1
That’s init
forking and execing sh
, sh
making sure only two
file descriptors are open, and sh
writing the $
prompt.
Hint: modify the syscall()
function in syscall.c
.
Challenge: print the system call arguments.
Your second task is to add a new system call to xv6. The main point
of the exercise is for you to see some of the different pieces of
the system call machinery. Your new system call will get the current
UTC time and return it to the user program. You may want to use the
helper function, cmostime()
(defined in lapic.c
), to read the real
time clock. date.h
contains the definition of struct rtcdate
,
which you will provide as an argument to cmostime()
as a pointer.
You should create a user-level program that calls your new date
system call; here’s some source you should put in date.c
:
In order to make your new date
program available to run from the
xv6 shell, add _date
to the UPROGS
definition in Makefile
.
Your strategy for making a date system call should be to clone all
of the pieces of code that are specific to some existing system
call like uptime
. Grep for
uptime
in all the source files, using grep -n uptime *.[chS].
When you’re done, typing date to an xv6 shell prompt should print the current UTC time.
Write down a few words of explanation for each of the files you had
to modify in the process of creating your date
system call.
Challenge: add a dup2()
system call and modify the shell to use it.
If you choose to do lab 6, you will be able to get the current UTC time from one of the NIST Internet Time Servers.
Write down your explanations of the modifications for date
in a file named answers.txt
,
and upload it using the course dropbox.