shithub: fork

ref: eea1eebb1304de23bca3b3e9759702c3d391bdd1
dir: /sys/src/cmd/jam/plan9.acid/

View raw version
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 = 4;
Runesync = 128;
Runeself = 128;
Runeerror = 65533;
Runemax = 1114111;
Runemask = 2097151;
sizeofFmt = 80;
aggr Fmt
{
	'b' 0 runes;
	'Y' 8 start;
	'Y' 16 to;
	'Y' 24 stop;
	'Y' 32 flush;
	'Y' 40 farg;
	'D' 48 nfmt;
	'Y' 56 args;
	'D' 64 r;
	'D' 68 width;
	'D' 72 prec;
	'U' 76 flags;
};

defn
Fmt(addr) {
	complex Fmt addr;
	print("	runes	", addr.runes, "\n");
	print("	start	", addr.start\Y, "\n");
	print("	to	", addr.to\Y, "\n");
	print("	stop	", addr.stop\Y, "\n");
	print("	flush	", addr.flush\Y, "\n");
	print("	farg	", addr.farg\Y, "\n");
	print("	nfmt	", addr.nfmt, "\n");
	print("	args	", addr.args\Y, "\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 = 64;
aggr Tm
{
	'D' 0 nsec;
	'D' 4 sec;
	'D' 8 min;
	'D' 12 hour;
	'D' 16 mday;
	'D' 20 mon;
	'D' 24 year;
	'D' 28 wday;
	'D' 32 yday;
	'a' 36 zone;
	'D' 52 tzoff;
	'Y' 56 tz;
};

defn
Tm(addr) {
	complex Tm addr;
	print("	nsec	", addr.nsec, "\n");
	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");
	print("	tz	", addr.tz\Y, "\n");
};

sizeofTmfmt = 16;
aggr Tmfmt
{
	'Y' 0 fmt;
	'A' Tm 8 tm;
};

defn
Tmfmt(addr) {
	complex Tmfmt addr;
	print("	fmt	", addr.fmt\Y, "\n");
	print("	tm	", addr.tm\Y, "\n");
};

PNPROC = 1;
PNGROUP = 2;
Profoff = 0;
Profuser = 1;
Profkernel = 2;
Proftime = 3;
Profsample = 4;
sizeofLock = 8;
aggr Lock
{
	'D' 0 val;
};

defn
Lock(addr) {
	complex Lock addr;
	print("	val	", addr.val, "\n");
};

sizeofQLp = 16;
aggr QLp
{
	'D' 0 inuse;
	'D' 4 state;
	'A' QLp 8 next;
};

defn
QLp(addr) {
	complex QLp addr;
	print("	inuse	", addr.inuse, "\n");
	print("	state	", addr.state, "\n");
	print("	next	", addr.next\Y, "\n");
};

sizeofQLock = 32;
aggr QLock
{
	Lock 0 lock;
	'D' 8 locked;
	'A' QLp 16 $head;
	'A' QLp 24 $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\Y, "\n");
	print("	$tail	", addr.$tail\Y, "\n");
};

sizeofRWLock = 32;
aggr RWLock
{
	Lock 0 lock;
	'D' 8 readers;
	'D' 12 writer;
	'A' QLp 16 $head;
	'A' QLp 24 $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\Y, "\n");
	print("	$tail	", addr.$tail\Y, "\n");
};

sizeofRendez = 24;
aggr Rendez
{
	'A' QLock 0 l;
	'A' QLp 8 $head;
	'A' QLp 16 $tail;
};

defn
Rendez(addr) {
	complex Rendez addr;
	print("	l	", addr.l\Y, "\n");
	print("	$head	", addr.$head\Y, "\n");
	print("	$tail	", addr.$tail\Y, "\n");
};

sizeofNetConnInfo = 72;
aggr NetConnInfo
{
	'Y' 0 dir;
	'Y' 8 root;
	'Y' 16 spec;
	'Y' 24 lsys;
	'Y' 32 lserv;
	'Y' 40 rsys;
	'Y' 48 rserv;
	'Y' 56 laddr;
	'Y' 64 raddr;
};

defn
NetConnInfo(addr) {
	complex NetConnInfo addr;
	print("	dir	", addr.dir\Y, "\n");
	print("	root	", addr.root\Y, "\n");
	print("	spec	", addr.spec\Y, "\n");
	print("	lsys	", addr.lsys\Y, "\n");
	print("	lserv	", addr.lserv\Y, "\n");
	print("	rsys	", addr.rsys\Y, "\n");
	print("	rserv	", addr.rserv\Y, "\n");
	print("	laddr	", addr.laddr\Y, "\n");
	print("	raddr	", addr.raddr\Y, "\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 = 80;
aggr Dir
{
	'u' 0 type;
	'U' 4 dev;
	Qid 8 qid;
	'U' 24 mode;
	'U' 28 atime;
	'U' 32 mtime;
	'V' 40 length;
	'Y' 48 name;
	'Y' 56 uid;
	'Y' 64 gid;
	'Y' 72 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\Y, "\n");
	print("	uid	", addr.uid\Y, "\n");
	print("	gid	", addr.gid\Y, "\n");
	print("	muid	", addr.muid\Y, "\n");
};

sizeofWaitmsg = 24;
aggr Waitmsg
{
	'D' 0 pid;
	'a' 4 time;
	'Y' 16 msg;
};

defn
Waitmsg(addr) {
	complex Waitmsg addr;
	print("	pid	", addr.pid, "\n");
	print("	time	", addr.time, "\n");
	print("	msg	", addr.msg\Y, "\n");
};

sizeofIOchunk = 16;
aggr IOchunk
{
	'Y' 0 addr;
	'U' 8 len;
};

defn
IOchunk(addr) {
	complex IOchunk addr;
	print("	addr	", addr.addr\Y, "\n");
	print("	len	", addr.len, "\n");
};

sizeofPlumbmsg = 56;
aggr Plumbmsg
{
	'Y' 0 src;
	'Y' 8 dst;
	'Y' 16 wdir;
	'Y' 24 type;
	'Y' 32 attr;
	'D' 40 ndata;
	'Y' 48 data;
};

defn
Plumbmsg(addr) {
	complex Plumbmsg addr;
	print("	src	", addr.src\Y, "\n");
	print("	dst	", addr.dst\Y, "\n");
	print("	wdir	", addr.wdir\Y, "\n");
	print("	type	", addr.type\Y, "\n");
	print("	attr	", addr.attr\Y, "\n");
	print("	ndata	", addr.ndata, "\n");
	print("	data	", addr.data\Y, "\n");
};

sizeofPlumbattr = 24;
aggr Plumbattr
{
	'Y' 0 name;
	'Y' 8 value;
	'A' Plumbattr 16 next;
};

defn
Plumbattr(addr) {
	complex Plumbattr addr;
	print("	name	", addr.name\Y, "\n");
	print("	value	", addr.value\Y, "\n");
	print("	next	", addr.next\Y, "\n");
};

Eopen = 0;
Ecreate = 1;
Emenu = 2;
Emodified = 3;
Eio = 4;
Ewseq = 5;
Eunk = 6;
Emissop = 7;
Edelim = 8;
Efork = 9;
Eintr = 10;
Eaddress = 11;
Esearch = 12;
Epattern = 13;
Enewline = 14;
Eblank = 15;
Enopattern = 16;
EnestXY = 17;
Enolbrace = 18;
Enoaddr = 19;
Eoverlap = 20;
Enosub = 21;
Elongrhs = 22;
Ebadrhs = 23;
Erange = 24;
Esequence = 25;
Eorder = 26;
Enoname = 27;
Eleftpar = 28;
Erightpar = 29;
Ebadclass = 30;
Ebadregexp = 31;
Eoverflow = 32;
Enocmd = 33;
Epipe = 34;
Enofile = 35;
Etoolong = 36;
Echanges = 37;
Eempty = 38;
Efsearch = 39;
Emanyfiles = 40;
Elongtag = 41;
Esubexp = 42;
Etmpovfl = 43;
Eappend = 44;
Ecantplumb = 45;
Ebufload = 46;
Wdupname = 0;
Wfile = 1;
Wdate = 2;
Wdupfile = 3;
Wnulls = 4;
Wpwd = 5;
Wnotnewline = 6;
Wbadstatus = 7;
Clean = 32;
Dirty = 39;
Unread = 45;
sizeofRange = 8;
aggr Range
{
	'D' 0 p1;
	'D' 4 p2;
};

defn
Range(addr) {
	complex Range addr;
	print("	p1	", addr.p1, "\n");
	print("	p2	", addr.p2, "\n");
};

sizeofRangeset = 80;
aggr Rangeset
{
	'a' 0 p;
};

defn
Rangeset(addr) {
	complex Rangeset addr;
	print("	p	", addr.p, "\n");
};

sizeofAddress = 16;
aggr Address
{
	Range 0 r;
	'Y' 8 f;
};

defn
Address(addr) {
	complex Address addr;
	print("Range r {\n");
	Range(addr.r);
	print("}\n");
	print("	f	", addr.f\Y, "\n");
};

sizeofString = 16;
aggr String
{
	'd' 0 n;
	'd' 2 size;
	'Y' 8 s;
};

defn
String(addr) {
	complex String addr;
	print("	n	", addr.n, "\n");
	print("	size	", addr.size, "\n");
	print("	s	", addr.s\Y, "\n");
};

sizeof_2_ = 8;
aggr _2_
{
	'Y' 0 listp;
	'Y' 0 voidp;
	'Y' 0 posnp;
	'A' String 0 stringp;
	'Y' 0 filep;
};

defn
_2_(addr) {
	complex _2_ addr;
	print("	listp	", addr.listp\Y, "\n");
	print("	voidp	", addr.voidp\Y, "\n");
	print("	posnp	", addr.posnp\Y, "\n");
	print("	stringp	", addr.stringp\Y, "\n");
	print("	filep	", addr.filep\Y, "\n");
};

sizeofList = 24;
aggr List
{
	'D' 0 type;
	'D' 4 nalloc;
	'D' 8 nused;
	_2_ 16 g;
};

defn
List(addr) {
	complex List addr;
	print("	type	", addr.type, "\n");
	print("	nalloc	", addr.nalloc, "\n");
	print("	nused	", addr.nused, "\n");
	print("_2_ g {\n");
	_2_(addr.g);
	print("}\n");
};

Blockincr = 256;
Maxblock = 8192;
BUFSIZE = 8192;
RBUFSIZE = 2048;
Null = 45;
Delete = 100;
Insert = 105;
Filename = 102;
Dot = 68;
Mark = 109;
sizeof_3_ = 8;
aggr _3_
{
	'U' 0 n;
	'Y' 0 next;
};

defn
_3_(addr) {
	complex _3_ addr;
	print("	n	", addr.n, "\n");
	print("	next	", addr.next\Y, "\n");
};

sizeofBlock = 16;
aggr Block
{
	'U' 0 addr;
	{
	'U' 8 n;
	'A' Block 8 next;
	};
};

defn
Block(addr) {
	complex Block addr;
	print("	addr	", addr.addr, "\n");
	print("_3_ {\n");
		_3_(addr+8);
	print("}\n");
};

sizeofDisk = 280;
aggr Disk
{
	'D' 0 fd;
	'V' 8 addr;
	'a' 16 free;
};

defn
Disk(addr) {
	complex Disk addr;
	print("	fd	", addr.fd, "\n");
	print("	addr	", addr.addr, "\n");
	print("	free	", addr.free, "\n");
};

sizeofBuffer = 56;
aggr Buffer
{
	'U' 0 nc;
	'Y' 8 c;
	'U' 16 cnc;
	'U' 20 cmax;
	'U' 24 cq;
	'D' 28 cdirty;
	'U' 32 cbi;
	'A' Block 40 bl;
	'U' 48 nbl;
};

defn
Buffer(addr) {
	complex Buffer addr;
	print("	nc	", addr.nc, "\n");
	print("	c	", addr.c\Y, "\n");
	print("	cnc	", addr.cnc, "\n");
	print("	cmax	", addr.cmax, "\n");
	print("	cq	", addr.cq, "\n");
	print("	cdirty	", addr.cdirty, "\n");
	print("	cbi	", addr.cbi, "\n");
	print("	bl	", addr.bl\Y, "\n");
	print("	nbl	", addr.nbl, "\n");
};

sizeofFile = 312;
aggr File
{
	{
	'U' 0 nc;
	'Y' 8 c;
	'U' 16 cnc;
	'U' 20 cmax;
	'U' 24 cq;
	'D' 28 cdirty;
	'U' 32 cbi;
	'A' Block 40 bl;
	'U' 48 nbl;
	};
	Buffer 56 delta;
	Buffer 112 epsilon;
	String 168 name;
	'W' 184 qidpath;
	'U' 192 mtime;
	'D' 196 dev;
	'D' 200 unread;
	'D' 204 seq;
	'D' 208 cleanseq;
	'D' 212 mod;
	'C' 216 rescuing;
	'D' 220 hiposn;
	Address 224 dot;
	Address 240 ndot;
	Range 256 tdot;
	Range 264 mark;
	'A' List 272 rasp;
	'd' 280 tag;
	'C' 282 closeok;
	'C' 283 deleted;
	Range 288 prevdot;
	Range 296 prevmark;
	'D' 304 prevseq;
	'D' 308 prevmod;
};

defn
File(addr) {
	complex File addr;
	print("Buffer {\n");
		Buffer(addr+0);
	print("}\n");
	print("Buffer delta {\n");
	Buffer(addr.delta);
	print("}\n");
	print("Buffer epsilon {\n");
	Buffer(addr.epsilon);
	print("}\n");
	print("String name {\n");
	String(addr.name);
	print("}\n");
	print("	qidpath	", addr.qidpath, "\n");
	print("	mtime	", addr.mtime, "\n");
	print("	dev	", addr.dev, "\n");
	print("	unread	", addr.unread, "\n");
	print("	seq	", addr.seq, "\n");
	print("	cleanseq	", addr.cleanseq, "\n");
	print("	mod	", addr.mod, "\n");
	print("	rescuing	", addr.rescuing, "\n");
	print("	hiposn	", addr.hiposn, "\n");
	print("Address dot {\n");
	Address(addr.dot);
	print("}\n");
	print("Address ndot {\n");
	Address(addr.ndot);
	print("}\n");
	print("Range tdot {\n");
	Range(addr.tdot);
	print("}\n");
	print("Range mark {\n");
	Range(addr.mark);
	print("}\n");
	print("	rasp	", addr.rasp\Y, "\n");
	print("	tag	", addr.tag, "\n");
	print("	closeok	", addr.closeok, "\n");
	print("	deleted	", addr.deleted, "\n");
	print("Range prevdot {\n");
	Range(addr.prevdot);
	print("}\n");
	print("Range prevmark {\n");
	Range(addr.prevmark);
	print("}\n");
	print("	prevseq	", addr.prevseq, "\n");
	print("	prevmod	", addr.prevmod, "\n");
};

complex Disk disk;
complex Address addr;
complex Buffer snarfbuf;
complex Buffer plan9buf;
complex Buffer cmdbuf;
complex List file;
complex List tempfile;
complex File cmd;
complex File curfile;
complex File lastfile;
complex Rangeset sel;
complex String curwd;
complex String cmdstr;
complex String genstr;
complex String lastpat;
complex String lastregexp;
complex String plan9cmd;
Tversion = 0;
Tstartcmdfile = 1;
Tcheck = 2;
Trequest = 3;
Torigin = 4;
Tstartfile = 5;
Tworkfile = 6;
Ttype = 7;
Tcut = 8;
Tpaste = 9;
Tsnarf = 10;
Tstartnewfile = 11;
Twrite = 12;
Tclose = 13;
Tlook = 14;
Tsearch = 15;
Tsend = 16;
Tdclick = 17;
Tstartsnarf = 18;
Tsetsnarf = 19;
Tack = 20;
Texit = 21;
Tplumb = 22;
Ttclick = 23;
Tmenucmd = 24;
Tmenucmdsend = 25;
TMAX = 26;
Hversion = 0;
Hbindname = 1;
Hcurrent = 2;
Hnewname = 3;
Hmovname = 4;
Hgrow = 5;
Hcheck0 = 6;
Hcheck = 7;
Hunlock = 8;
Hdata = 9;
Horigin = 10;
Hunlockfile = 11;
Hsetdot = 12;
Hgrowdata = 13;
Hmoveto = 14;
Hclean = 15;
Hdirty = 16;
Hcut = 17;
Hsetpat = 18;
Hdelname = 19;
Hclose = 20;
Hsetsnarf = 21;
Hsnarflen = 22;
Hack = 23;
Hexit = 24;
Hplumb = 25;
Hmenucmd = 26;
HMAX = 27;
sizeofHeader = 8;
aggr Header
{
	'b' 0 type;
	'b' 1 count0;
	'b' 2 count1;
	'a' 3 data;
};

defn
Header(addr) {
	complex Header addr;
	print("	type	", addr.type, "\n");
	print("	count0	", addr.count0, "\n");
	print("	count1	", addr.count1, "\n");
	print("	data	", addr.data, "\n");
};

complex String print_ss:a;
complex String print_ss:b;
complex String print_s:a;
complex Dir statfile:dirb;
complex Dir statfd:dirb;
complex Waitmsg waitfor:w;