sys_fork() creates a new process by duplicating the calling process. The
new process is referred to as the child process. The calling process is
referred to as the parent process.
sys_pipe() creates a pipe, a unidirectional data channel that can be used
for interprocess communication. The pointer pipefd is used to return two
file descriptors referring to the ends of the pipe. pipefd[0] refers to
the read end of the pipe. pipefd[1] refers to the write end of the pipe.
Data written to the write end of the pipe is buffered by the host until it
is read from the read end of the pipe.
Reads up to the given number of words into the buffer [recv_buf,
recv_buf + nwords). Returns the number of bytes actually read.
sys_read_words is a more efficient interface than sys_read, but
varies from POSIX semantics. Notably: