change meaning of $GOMAXPROCS to number of cpus to use,
not number of threads.  can still starve all the other threads,
but only by looping, not by waiting in a system call.

fix darwin syscall.Syscall6 bug.

fix chanclient bug.

delete $GOMAXPROCS from network tests.

add stripped down printf, sys.printhex to runtime.

R=r
DELTA=355  (217 added, 36 deleted, 102 changed)
OCL=20017
CL=20019
diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h
index 409228d..4b282c1 100644
--- a/src/runtime/runtime.h
+++ b/src/runtime/runtime.h
@@ -155,6 +155,7 @@
 	byte*	moresp;
 	int32	siz1;
 	int32	siz2;
+	int32	id;
 	Note	havenextg;
 	G*	nextg;
 	M*	schedlink;
@@ -196,6 +197,8 @@
 	Array	pcln;	// pc/ln tab for this func
 	int64	pc0;	// starting pc, ln for table
 	int32	ln0;
+	int32	args;	// number of 32-bit in/out args
+	int32	locals;	// number of 32-bit locals
 };
 
 /*
@@ -239,6 +242,7 @@
 void	throw(int8*);
 uint32	rnd(uint32, uint32);
 void	prints(int8*);
+void	printf(int8*, ...);
 byte*	mchr(byte*, byte, byte*);
 void	mcpy(byte*, byte*, uint32);
 void	mmov(byte*, byte*, uint32);
@@ -313,6 +317,8 @@
 void	sys·printstring(string);
 void	sys·printpc(void*);
 void	sys·printpointer(void*);
+void	sys·printuint(uint64);
+void	sys·printhex(uint64);
 void	sys·catstring(string, string, string);
 void	sys·cmpstring(string, string, int32);
 void	sys·slicestring(string, int32, int32, string);