diff --git a/src/cmd/jpg/mkfile b/src/cmd/jpg/mkfile
index cdefe41..67f25a3 100644
--- a/src/cmd/jpg/mkfile
+++ b/src/cmd/jpg/mkfile
@@ -50,3 +50,5 @@
 
 nuke-headers:V:
 	rm -f rgbv.h ycbcr.h
+
+CLEANFILES=$CLEANFILES o.rgbycc o.rgbrgbv
diff --git a/src/cmd/mkfile b/src/cmd/mkfile
index ab34826..5a5391d 100644
--- a/src/cmd/mkfile
+++ b/src/cmd/mkfile
@@ -1,11 +1,11 @@
 <$PLAN9/src/mkhdr
 
-TARG=`ls *.[cy] | sed 's/\.c//'`
+TARG=`ls *.[cy] | sed 's/\.[cy]//'`
 SHORTLIB=sec fs mux regexp9 thread bio 9
 
 <$PLAN9/src/mkmany
 
-BUGGERED='CVS|faces|factotum|mailfs|mk|scat|upas|vac|venti|lex'
+BUGGERED='CVS|faces|factotum|mailfs|scat|upas|vac|venti|lex'
 DIRS=`ls -l |sed -n 's/^d.* //p' |egrep -v "^($BUGGERED)$"`
 
 <$PLAN9/src/mkdirs
@@ -27,4 +27,3 @@
 
 CLEANFILES=$CLEANFILES bc.tab.[ch] units.tab.[ch]
 
-
diff --git a/src/libip/udp.c b/src/libip/udp.c
new file mode 100644
index 0000000..8df03ba
--- /dev/null
+++ b/src/libip/udp.c
@@ -0,0 +1,52 @@
+#include <u.h>
+#define NOPLAN9DEFINES
+#include <libc.h>
+#include <ip.h>
+
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+/*
+ *  prefix of all v4 addresses
+ *  copied from libip because libc cannot depend on libip
+ */
+static uchar v4prefix[IPaddrlen] = {
+	0, 0, 0, 0,
+	0, 0, 0, 0,
+	0, 0, 0xff, 0xff,
+	0, 0, 0, 0
+};
+
+long
+udpread(int fd, Udphdr *hdr, void *buf, long n)
+{
+	struct sockaddr_in sin;
+	socklen_t len;
+
+	len = sizeof sin;
+	n = recvfrom(fd, buf, n, 0, (struct sockaddr*)&sin, &len);
+	if(n < 0)
+		return -1;
+	if(len != sizeof sin){
+		werrstr("recvfrom acting weird");
+		return -1;
+	}
+	memset(hdr, 0, sizeof *hdr);
+	memmove(hdr->raddr, v4prefix, IPaddrlen);
+	*(u32int*)(hdr->raddr+12) = *(u32int*)&sin.sin_addr;
+	*(u16int*)hdr->rport = *(u16int*)&sin.sin_port;
+	return n;
+}
+
+long
+udpwrite(int fd, Udphdr *hdr, void *buf, long n)
+{
+	struct sockaddr_in sin;
+
+	memset(&sin, 0, sizeof sin);
+	sin.sin_family = AF_INET;
+	*(u32int*)&sin.sin_addr = *(u32int*)(hdr->raddr+12);
+	*(u16int*)&sin.sin_port = *(u16int*)hdr->rport;
+	return sendto(fd, buf, n, 0, (struct sockaddr*)&sin, sizeof sin);
+}
+
diff --git a/src/libregexp/cvt b/src/libregexp/cvt
new file mode 100755
index 0000000..23757be
--- /dev/null
+++ b/src/libregexp/cvt
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+/usr/bin/sed -E '
+	s/\.(sp|rsp)/.s.\1/g
+	s/\.(ep|rep)/.e.\1/g
+	s/(\.|->)(cp|r|subid|right)([^a-zA-Z0-9_])/\1u1.\2\3/g
+	s/(\.|->)(left|next)([^a-z])/\1u2.\2\3/g
+	/#include <u.h>/d
+	s/<libc.h>/"lib9.h"/g
+	s/"regexp.h"/"regexp9.h"/g
+' $*
diff --git a/src/libsunrpc/COPYING b/src/libsunrpc/COPYING
new file mode 100644
index 0000000..e57f239
--- /dev/null
+++ b/src/libsunrpc/COPYING
@@ -0,0 +1,29 @@
+
+This software was developed as part of a project at MIT:
+	/sys/src/libsunrpc/*
+	/sys/src/cmd/nfs.c
+	/sys/src/cmd/aux/nfsmount.c
+	/sys/src/cmd/aux/portmap.c
+
+Copyright (c) 2003 Russ Cox,
+                   Massachusetts Institute of Technology
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/src/libthread/386.c b/src/libthread/386.c
index 3fbf0af..d8052f0 100644
--- a/src/libthread/386.c
+++ b/src/libthread/386.c
@@ -3,7 +3,6 @@
  * To use this you need some patches to Valgrind that
  * let it help out with detecting stack overflow. 
  */
-#define USEVALGRIND 0
 #ifdef USEVALGRIND
 #include <valgrind/memcheck.h>
 #endif
diff --git a/src/libthread/channel.c b/src/libthread/channel.c
index ce27896..68eaa95 100644
--- a/src/libthread/channel.c
+++ b/src/libthread/channel.c
@@ -497,7 +497,7 @@
 		_threaddebug(DBGCHAN, "unlocking the chanlock");
 		unlock(&chanlock);
 		_procsplx(spl);
-		_threaddebug(DBGCHAN, "chanlock is %lud", *(ulong*)&chanlock);
+		_threaddebug(DBGCHAN, "chanlock is %lud", *(ulong*)(void*)&chanlock);
 		while(_threadrendezvous((ulong)b->tag, 0) == ~0)
 			;
 		return 1;
diff --git a/src/libthread/mkfile b/src/libthread/mkfile
index a76682b..1ced902 100644
--- a/src/libthread/mkfile
+++ b/src/libthread/mkfile
@@ -56,3 +56,9 @@
 asm-Linux-386.$O: asm-FreeBSD-386.s
 asm-NetBSD-386.$O: asm-FreeBSD-386.s
 asm-OpenBSD-386.$O: asm-FreeBSD-386.s
+
+# sorry
+VG=`test -d /home/rsc/pub/valgrind-debian && echo -DUSEVALGRIND`
+
+CFLAGS=$CFLAGS $VG
+
diff --git a/src/libventi/cache.acid b/src/libventi/cache.acid
new file mode 100644
index 0000000..45b2846
--- /dev/null
+++ b/src/libventi/cache.acid
@@ -0,0 +1,644 @@
+sizeof_1_ = 8;
+aggr _1_
+{
+	'U' 0 lo;
+	'U' 4 hi;
+};
+
+defn
+_1_(addr) {
+	complex _1_ addr;
+	print("	lo	", addr.lo, "\n");
+	print("	hi	", addr.hi, "\n");
+};
+
+sizeofFPdbleword = 8;
+aggr FPdbleword
+{
+	'F' 0 x;
+	{
+	'U' 0 lo;
+	'U' 4 hi;
+	};
+};
+
+defn
+FPdbleword(addr) {
+	complex FPdbleword addr;
+	print("	x	", addr.x, "\n");
+	print("_1_ {\n");
+		_1_(addr+0);
+	print("}\n");
+};
+
+UTFmax = 3;
+Runesync = 128;
+Runeself = 128;
+Runeerror = 128;
+sizeofFmt = 48;
+aggr Fmt
+{
+	'b' 0 runes;
+	'X' 4 start;
+	'X' 8 to;
+	'X' 12 stop;
+	'X' 16 flush;
+	'X' 20 farg;
+	'D' 24 nfmt;
+	'X' 28 args;
+	'D' 32 r;
+	'D' 36 width;
+	'D' 40 prec;
+	'U' 44 flags;
+};
+
+defn
+Fmt(addr) {
+	complex Fmt addr;
+	print("	runes	", addr.runes, "\n");
+	print("	start	", addr.start\X, "\n");
+	print("	to	", addr.to\X, "\n");
+	print("	stop	", addr.stop\X, "\n");
+	print("	flush	", addr.flush\X, "\n");
+	print("	farg	", addr.farg\X, "\n");
+	print("	nfmt	", addr.nfmt, "\n");
+	print("	args	", addr.args\X, "\n");
+	print("	r	", addr.r, "\n");
+	print("	width	", addr.width, "\n");
+	print("	prec	", addr.prec, "\n");
+	print("	flags	", addr.flags, "\n");
+};
+
+FmtWidth = 1;
+FmtLeft = 2;
+FmtPrec = 4;
+FmtSharp = 8;
+FmtSpace = 16;
+FmtSign = 32;
+FmtZero = 64;
+FmtUnsigned = 128;
+FmtShort = 256;
+FmtLong = 512;
+FmtVLong = 1024;
+FmtComma = 2048;
+FmtByte = 4096;
+FmtFlag = 8192;
+sizeofTm = 40;
+aggr Tm
+{
+	'D' 0 sec;
+	'D' 4 min;
+	'D' 8 hour;
+	'D' 12 mday;
+	'D' 16 mon;
+	'D' 20 year;
+	'D' 24 wday;
+	'D' 28 yday;
+	'a' 32 zone;
+	'D' 36 tzoff;
+};
+
+defn
+Tm(addr) {
+	complex Tm addr;
+	print("	sec	", addr.sec, "\n");
+	print("	min	", addr.min, "\n");
+	print("	hour	", addr.hour, "\n");
+	print("	mday	", addr.mday, "\n");
+	print("	mon	", addr.mon, "\n");
+	print("	year	", addr.year, "\n");
+	print("	wday	", addr.wday, "\n");
+	print("	yday	", addr.yday, "\n");
+	print("	zone	", addr.zone, "\n");
+	print("	tzoff	", addr.tzoff, "\n");
+};
+
+PNPROC = 1;
+PNGROUP = 2;
+sizeofLock = 4;
+aggr Lock
+{
+	'D' 0 val;
+};
+
+defn
+Lock(addr) {
+	complex Lock addr;
+	print("	val	", addr.val, "\n");
+};
+
+sizeofQLp = 12;
+aggr QLp
+{
+	'D' 0 inuse;
+	'A' QLp 4 next;
+	'C' 8 state;
+};
+
+defn
+QLp(addr) {
+	complex QLp addr;
+	print("	inuse	", addr.inuse, "\n");
+	print("	next	", addr.next\X, "\n");
+	print("	state	", addr.state, "\n");
+};
+
+sizeofQLock = 16;
+aggr QLock
+{
+	Lock 0 lock;
+	'D' 4 locked;
+	'A' QLp 8 $head;
+	'A' QLp 12 $tail;
+};
+
+defn
+QLock(addr) {
+	complex QLock addr;
+	print("Lock lock {\n");
+	Lock(addr.lock);
+	print("}\n");
+	print("	locked	", addr.locked, "\n");
+	print("	$head	", addr.$head\X, "\n");
+	print("	$tail	", addr.$tail\X, "\n");
+};
+
+sizeofRWLock = 20;
+aggr RWLock
+{
+	Lock 0 lock;
+	'D' 4 readers;
+	'D' 8 writer;
+	'A' QLp 12 $head;
+	'A' QLp 16 $tail;
+};
+
+defn
+RWLock(addr) {
+	complex RWLock addr;
+	print("Lock lock {\n");
+	Lock(addr.lock);
+	print("}\n");
+	print("	readers	", addr.readers, "\n");
+	print("	writer	", addr.writer, "\n");
+	print("	$head	", addr.$head\X, "\n");
+	print("	$tail	", addr.$tail\X, "\n");
+};
+
+sizeofRendez = 12;
+aggr Rendez
+{
+	'A' QLock 0 l;
+	'A' QLp 4 $head;
+	'A' QLp 8 $tail;
+};
+
+defn
+Rendez(addr) {
+	complex Rendez addr;
+	print("	l	", addr.l\X, "\n");
+	print("	$head	", addr.$head\X, "\n");
+	print("	$tail	", addr.$tail\X, "\n");
+};
+
+sizeofNetConnInfo = 28;
+aggr NetConnInfo
+{
+	'X' 0 dir;
+	'X' 4 root;
+	'X' 8 spec;
+	'X' 12 lsys;
+	'X' 16 lserv;
+	'X' 20 rsys;
+	'X' 24 rserv;
+};
+
+defn
+NetConnInfo(addr) {
+	complex NetConnInfo addr;
+	print("	dir	", addr.dir\X, "\n");
+	print("	root	", addr.root\X, "\n");
+	print("	spec	", addr.spec\X, "\n");
+	print("	lsys	", addr.lsys\X, "\n");
+	print("	lserv	", addr.lserv\X, "\n");
+	print("	rsys	", addr.rsys\X, "\n");
+	print("	rserv	", addr.rserv\X, "\n");
+};
+
+RFNAMEG = 1;
+RFENVG = 2;
+RFFDG = 4;
+RFNOTEG = 8;
+RFPROC = 16;
+RFMEM = 32;
+RFNOWAIT = 64;
+RFCNAMEG = 1024;
+RFCENVG = 2048;
+RFCFDG = 4096;
+RFREND = 8192;
+RFNOMNT = 16384;
+sizeofQid = 16;
+aggr Qid
+{
+	'W' 0 path;
+	'U' 8 vers;
+	'b' 12 type;
+};
+
+defn
+Qid(addr) {
+	complex Qid addr;
+	print("	path	", addr.path, "\n");
+	print("	vers	", addr.vers, "\n");
+	print("	type	", addr.type, "\n");
+};
+
+sizeofDir = 60;
+aggr Dir
+{
+	'u' 0 type;
+	'U' 4 dev;
+	Qid 8 qid;
+	'U' 24 mode;
+	'U' 28 atime;
+	'U' 32 mtime;
+	'V' 36 length;
+	'X' 44 name;
+	'X' 48 uid;
+	'X' 52 gid;
+	'X' 56 muid;
+};
+
+defn
+Dir(addr) {
+	complex Dir addr;
+	print("	type	", addr.type, "\n");
+	print("	dev	", addr.dev, "\n");
+	print("Qid qid {\n");
+	Qid(addr.qid);
+	print("}\n");
+	print("	mode	", addr.mode, "\n");
+	print("	atime	", addr.atime, "\n");
+	print("	mtime	", addr.mtime, "\n");
+	print("	length	", addr.length, "\n");
+	print("	name	", addr.name\X, "\n");
+	print("	uid	", addr.uid\X, "\n");
+	print("	gid	", addr.gid\X, "\n");
+	print("	muid	", addr.muid\X, "\n");
+};
+
+sizeofWaitmsg = 20;
+aggr Waitmsg
+{
+	'D' 0 pid;
+	'a' 4 time;
+	'X' 16 msg;
+};
+
+defn
+Waitmsg(addr) {
+	complex Waitmsg addr;
+	print("	pid	", addr.pid, "\n");
+	print("	time	", addr.time, "\n");
+	print("	msg	", addr.msg\X, "\n");
+};
+
+sizeofIOchunk = 8;
+aggr IOchunk
+{
+	'X' 0 addr;
+	'U' 4 len;
+};
+
+defn
+IOchunk(addr) {
+	complex IOchunk addr;
+	print("	addr	", addr.addr\X, "\n");
+	print("	len	", addr.len, "\n");
+};
+
+MaxFragSize = 9216;
+VtScoreSize = 20;
+VtMaxStringSize = 1024;
+VtMaxFileSize = 281474976710655;
+VtMaxLumpSize = 57344;
+VtPointerDepth = 7;
+VtDataType = 0;
+VtDirType = 8;
+VtRootType = 16;
+VtMaxType = 17;
+VtTypeDepthMask = 7;
+VtEntryActive = 1;
+VtEntryDir = 2;
+VtEntryDepthShift = 2;
+VtEntryDepthMask = 28;
+VtEntryLocal = 32;
+VtEntrySize = 40;
+sizeofVtEntry = 40;
+aggr VtEntry
+{
+	'U' 0 gen;
+	'u' 4 psize;
+	'u' 6 dsize;
+	'b' 8 type;
+	'b' 9 flags;
+	'W' 12 size;
+	'a' 20 score;
+};
+
+defn
+VtEntry(addr) {
+	complex VtEntry addr;
+	print("	gen	", addr.gen, "\n");
+	print("	psize	", addr.psize, "\n");
+	print("	dsize	", addr.dsize, "\n");
+	print("	type	", addr.type, "\n");
+	print("	flags	", addr.flags, "\n");
+	print("	size	", addr.size, "\n");
+	print("	score	", addr.score, "\n");
+};
+
+sizeofVtRoot = 300;
+aggr VtRoot
+{
+	'a' 0 name;
+	'a' 128 type;
+	'a' 256 score;
+	'u' 276 blocksize;
+	'a' 278 prev;
+};
+
+defn
+VtRoot(addr) {
+	complex VtRoot addr;
+	print("	name	", addr.name, "\n");
+	print("	type	", addr.type, "\n");
+	print("	score	", addr.score, "\n");
+	print("	blocksize	", addr.blocksize, "\n");
+	print("	prev	", addr.prev, "\n");
+};
+
+VtRootSize = 300;
+VtRootVersion = 2;
+VtCryptoStrengthNone = 0;
+VtCryptoStrengthAuth = 1;
+VtCryptoStrengthWeak = 2;
+VtCryptoStrengthStrong = 3;
+VtCryptoNone = 0;
+VtCryptoSSL3 = 1;
+VtCryptoTLS1 = 2;
+VtCryptoMax = 3;
+VtCodecNone = 0;
+VtCodecDeflate = 1;
+VtCodecThwack = 2;
+VtCodecMax = 3;
+VtRerror = 1;
+VtTping = 2;
+VtRping = 3;
+VtThello = 4;
+VtRhello = 5;
+VtTgoodbye = 6;
+VtRgoodbye = 7;
+VtTauth0 = 8;
+VtRauth0 = 9;
+VtTauth1 = 10;
+VtRauth1 = 11;
+VtTread = 12;
+VtRread = 13;
+VtTwrite = 14;
+VtRwrite = 15;
+VtTsync = 16;
+VtRsync = 17;
+VtTmax = 18;
+sizeofVtFcall = 80;
+aggr VtFcall
+{
+	'b' 0 type;
+	'b' 1 tag;
+	'X' 4 error;
+	'X' 8 version;
+	'X' 12 uid;
+	'b' 16 strength;
+	'X' 20 crypto;
+	'U' 24 ncrypto;
+	'X' 28 codec;
+	'U' 32 ncodec;
+	'X' 36 sid;
+	'b' 40 rcrypto;
+	'b' 41 rcodec;
+	'X' 44 auth;
+	'U' 48 nauth;
+	'a' 52 score;
+	'b' 72 dtype;
+	'u' 74 count;
+	'X' 76 data;
+};
+
+defn
+VtFcall(addr) {
+	complex VtFcall addr;
+	print("	type	", addr.type, "\n");
+	print("	tag	", addr.tag, "\n");
+	print("	error	", addr.error\X, "\n");
+	print("	version	", addr.version\X, "\n");
+	print("	uid	", addr.uid\X, "\n");
+	print("	strength	", addr.strength, "\n");
+	print("	crypto	", addr.crypto\X, "\n");
+	print("	ncrypto	", addr.ncrypto, "\n");
+	print("	codec	", addr.codec\X, "\n");
+	print("	ncodec	", addr.ncodec, "\n");
+	print("	sid	", addr.sid\X, "\n");
+	print("	rcrypto	", addr.rcrypto, "\n");
+	print("	rcodec	", addr.rcodec, "\n");
+	print("	auth	", addr.auth\X, "\n");
+	print("	nauth	", addr.nauth, "\n");
+	print("	score	", addr.score, "\n");
+	print("	dtype	", addr.dtype, "\n");
+	print("	count	", addr.count, "\n");
+	print("	data	", addr.data\X, "\n");
+};
+
+VtStateAlloc = 0;
+VtStateConnected = 1;
+VtStateClosed = 2;
+sizeofVtConn = 1148;
+aggr VtConn
+{
+	QLock 0 lk;
+	QLock 16 inlk;
+	QLock 32 outlk;
+	'D' 48 debug;
+	'D' 52 infd;
+	'D' 56 outfd;
+	'D' 60 muxer;
+	'X' 64 writeq;
+	'X' 68 readq;
+	'D' 72 state;
+	'a' 76 wait;
+	'U' 1100 ntag;
+	'U' 1104 nsleep;
+	'X' 1108 part;
+	Rendez 1112 tagrend;
+	Rendez 1124 rpcfork;
+	'X' 1136 version;
+	'X' 1140 uid;
+	'X' 1144 sid;
+};
+
+defn
+VtConn(addr) {
+	complex VtConn addr;
+	print("QLock lk {\n");
+	QLock(addr.lk);
+	print("}\n");
+	print("QLock inlk {\n");
+	QLock(addr.inlk);
+	print("}\n");
+	print("QLock outlk {\n");
+	QLock(addr.outlk);
+	print("}\n");
+	print("	debug	", addr.debug, "\n");
+	print("	infd	", addr.infd, "\n");
+	print("	outfd	", addr.outfd, "\n");
+	print("	muxer	", addr.muxer, "\n");
+	print("	writeq	", addr.writeq\X, "\n");
+	print("	readq	", addr.readq\X, "\n");
+	print("	state	", addr.state, "\n");
+	print("	wait	", addr.wait, "\n");
+	print("	ntag	", addr.ntag, "\n");
+	print("	nsleep	", addr.nsleep, "\n");
+	print("	part	", addr.part\X, "\n");
+	print("Rendez tagrend {\n");
+	Rendez(addr.tagrend);
+	print("}\n");
+	print("Rendez rpcfork {\n");
+	Rendez(addr.rpcfork);
+	print("}\n");
+	print("	version	", addr.version\X, "\n");
+	print("	uid	", addr.uid\X, "\n");
+	print("	sid	", addr.sid\X, "\n");
+};
+
+NilBlock = -1;
+sizeofVtBlock = 88;
+aggr VtBlock
+{
+	'X' 0 c;
+	QLock 4 lk;
+	'X' 20 data;
+	'a' 24 score;
+	'b' 44 type;
+	'D' 48 nlock;
+	'D' 52 iostate;
+	'D' 56 ref;
+	'U' 60 heap;
+	'A' VtBlock 64 next;
+	'A' VtBlock 68 prev;
+	'U' 72 used;
+	'U' 76 used2;
+	'U' 80 addr;
+	'D' 84 decrypted;
+};
+
+defn
+VtBlock(addr) {
+	complex VtBlock addr;
+	print("	c	", addr.c\X, "\n");
+	print("QLock lk {\n");
+	QLock(addr.lk);
+	print("}\n");
+	print("	data	", addr.data\X, "\n");
+	print("	score	", addr.score, "\n");
+	print("	type	", addr.type, "\n");
+	print("	nlock	", addr.nlock, "\n");
+	print("	iostate	", addr.iostate, "\n");
+	print("	ref	", addr.ref, "\n");
+	print("	heap	", addr.heap, "\n");
+	print("	next	", addr.next\X, "\n");
+	print("	prev	", addr.prev\X, "\n");
+	print("	used	", addr.used, "\n");
+	print("	used2	", addr.used2, "\n");
+	print("	addr	", addr.addr, "\n");
+	print("	decrypted	", addr.decrypted, "\n");
+};
+
+VtOREAD = 0;
+VtOWRITE = 1;
+VtORDWR = 2;
+VtOCREATE = 256;
+BioLocal = 1;
+BioVenti = 2;
+BioReading = 3;
+BioWriting = 4;
+BioEmpty = 5;
+BioVentiError = 6;
+BadHeap = -1;
+sizeofVtCache = 60;
+aggr VtCache
+{
+	QLock 0 lk;
+	'A' VtConn 16 z;
+	'U' 20 blocksize;
+	'U' 24 now;
+	'A' VtBlock 28 hash;
+	'D' 32 nhash;
+	'A' VtBlock 36 heap;
+	'D' 40 nheap;
+	'A' VtBlock 44 block;
+	'D' 48 nblock;
+	'X' 52 mem;
+	'D' 56 mode;
+};
+
+defn
+VtCache(addr) {
+	complex VtCache addr;
+	print("QLock lk {\n");
+	QLock(addr.lk);
+	print("}\n");
+	print("	z	", addr.z\X, "\n");
+	print("	blocksize	", addr.blocksize, "\n");
+	print("	now	", addr.now, "\n");
+	print("	hash	", addr.hash\X, "\n");
+	print("	nhash	", addr.nhash, "\n");
+	print("	heap	", addr.heap\X, "\n");
+	print("	nheap	", addr.nheap, "\n");
+	print("	block	", addr.block\X, "\n");
+	print("	nblock	", addr.nblock, "\n");
+	print("	mem	", addr.mem\X, "\n");
+	print("	mode	", addr.mode, "\n");
+};
+
+complex VtConn vtcachealloc:z;
+complex VtCache vtcachealloc:c;
+complex VtBlock vtcachealloc:b;
+complex VtCache vtcachefree:c;
+complex VtCache vtcachedump:c;
+complex VtBlock vtcachedump:b;
+complex VtCache cachecheck:c;
+complex VtBlock cachecheck:b;
+complex VtBlock upheap:b;
+complex VtBlock upheap:bb;
+complex VtCache upheap:c;
+complex VtBlock downheap:b;
+complex VtBlock downheap:bb;
+complex VtCache downheap:c;
+complex VtBlock heapdel:b;
+complex VtCache heapdel:c;
+complex VtBlock heapins:b;
+complex VtCache vtcachebumpblock:c;
+complex VtBlock vtcachebumpblock:b;
+complex VtCache vtcachelocal:c;
+complex VtBlock vtcachelocal:b;
+complex VtCache vtcacheallocblock:c;
+complex VtBlock vtcacheallocblock:b;
+complex VtCache vtcacheglobal:c;
+complex VtBlock vtcacheglobal:b;
+complex VtBlock vtblockduplock:b;
+complex VtBlock vtblockput:b;
+complex VtCache vtblockput:c;
+complex VtBlock vtblockwrite:b;
+complex VtCache vtblockwrite:c;
+complex VtCache vtcacheblocksize:c;
+complex VtBlock vtblockcopy:b;
+complex VtBlock vtblockcopy:bb;
