Initial commit for socket related networking stuff.

Added the first socket call and related structures.
Integrate socket with vfs structures and added udp test.
Socket infrastructure change and basic udp send.

Added a test program to test udp send.
Added support for mbuf like pbuf.
Added udp send functionality to e1000 and rl drivers.
Work in progress commit towards a basic working network system.
WIP commit, adding support for receiving into a pbuf.
Udp packet can now be delivered to the application and sent correctly.

No protection for concurrency yet. Also the receiving is quite inefficient.
Need to allocate pbufs and reuse them effectively in the e1000 driver.
Fixed a small bug associated with UDP length and return code form recv.
Fixed recv function in the driver to process more than one packet per interrupt.
Also enabled processes to be blocked on a socket by using recvfrom.

UDP sending and receiving of regularly sized packets should work.
There are a bunch of potential issues. Mostly, performance related.
Locking and unlocking using spinlocks for each packet is going to hurt when performance
becomes an issue..
Fixing inconsistency resulted from a new version of glibc.

Basically these files were added to the old glibc directory and then
removed as a result of version change.
Adding select support for basic socket udp receive.
Currently do not support descriptors that are waiting for writes,
since all of our writes to sockets are non-blocking due to udp.
In the future, this will likely change once I implement TCP.
x86: tsc cycles test

Simple benchmark to determine if TSC ticks are equivalent to cycles,
given that the CPU frequency doesn't vary.
initial tcp commit!

Things that may break, IP options, out of sequence packet handling, etc.
Basic socket stubs and functionalities.

Putting the socket interface in place, and some initial implementation of sockets
for tcp.
MCS PDR locks use memalign

To ensure we get the right alignment, and not only the right size, for
the malloc'd qnodes.
Removes the MCS-PDR lock holder optimization (XCC)

Was an optimization for making preemption recovery fast, but was making
the locking common case slow.

Reinstall your kernel headers if you want (it'll still build okay).
accept function and wake up logic
fix up for sys_listen
Kernel uses ARCH_CL_SIZE (XCC)

Instead of the older HW_CACHE_ALIGN or whatever.

Reinstall kernel headers.
Padding in MCS-PDR qnodes (XCC)

Check the comment about weird padding issues.  Either way, we want some
padding.  Too much wasn't right either, for some reason.

Reinstall kernel headers.
More simple fixes.
Last time the cross compilation did not complete from scratch.
Merge origin/netpush (networking code) (XCC)

Had some compilation issues (missing mbuf.h, etc), but compiles now.

Other than basic conflicts, this also was using the old semaphore style,
as well as having a few other issues in semaphore usage, so please check
that out.

Rebuild your cross compiler.  There are a bunch of new files in the -ros
folder, so either copy them over, or just make clean.  Here are the new
glibc files:

glibc-2.14.1-ros/sysdeps/ros/accept.c
glibc-2.14.1-ros/sysdeps/ros/bind.c
glibc-2.14.1-ros/sysdeps/ros/connect.c
glibc-2.14.1-ros/sysdeps/ros/listen.c
glibc-2.14.1-ros/sysdeps/ros/recv.c
glibc-2.14.1-ros/sysdeps/ros/recvfrom.c
glibc-2.14.1-ros/sysdeps/ros/select.c
glibc-2.14.1-ros/sysdeps/ros/send.c
glibc-2.14.1-ros/sysdeps/ros/sendto.c
glibc-2.14.1-ros/sysdeps/ros/socket.c

Conflicts:
	Makeconfig
	kern/include/kthread.h
	kern/include/time.h
	kern/include/vfs.h
	kern/src/Makefrag
	kern/src/kthread.c
	kern/src/syscall.c