0. Introduction

This readme contains some build instrucions and some notes on the layout
of this directory structure.

1. Build Process

The build process for this project should be straight forward.  Under the
directory / there is a file called config.mk.  This file contains
two variables: THREAD_OBJS, SYSCALL_OBJS. This file also contains the 
variable STUDENTPROGS.  You should fill in the variables with the object 
files (e.g. foo.o) for the associated library or user test programs.  
Object files that get built into your thread library, i.e. those built 
in the ./user/lib/thread directory, should go into the THREAD_OBJS variable.  
Object files that get built into your syscall wrapper library, i.e. those 
build in the ./user/lib/syscall directory, should go into the SYSCALL_OBJS 
variable.  User test programs should be listed in the STUDENTPROGS variable.

You should only edit the .mk as far as Makefile stuff goes.  This file is
included in the necessary Makefiles which should be all set up to go. Details
on the directory structure can be found below.

2. Directory Structure

./
The only files you should ever even think about editing in the directory are
the config.mk and update.pl and that is only if you are
working from a non-andrew machine and need to use the ./update.pl web
mechanism.  If you are on a cluster machine, you should not have to edit these.

./410kern
You don't need to touch this direcory or its subdirectories.

./user
This is where the fun happens.  You should not have to edit the Makefile here
but should have to edit user_libs.mk to get your libraries to build.

./user/inc
You can but include files here or in ./user/lib/inc.  This is the prefered
place for header files that only have to do with your test cases.

./user/lib
You will find even more fun in here, but shouldn't have to edit any of the
files that are directly in this tree.

./user/lib/inc
This is the prefered place to drop header files for your libraries.  Skeletons
for most of what you should need are provided.

./user/lib/syscall
This is where you should drop the files for your syscall wrappers.  You should
not have to edit this Makefile.

./user/lib/thread
This is where you should drop the file for your thread library, including
mutexes, condition variables, r/w locks, semaphores, and your thread safe
malloc wrapper.  You should not have to edit this Makefile

./410user/progs
This is where we will stick our tests.  Don't touch this directory.

./user/progs
This is where you should put the source files for your tests.  You should not
have to edit the Makefile. You should add your tests to user_tests.mk

./temp
This is a directory where some temp files will go during the build process
that makes the ram disk.  You should not have to touch this directory.


