ref: 19c9042e451e61f1d71f79eea86209e9369d1944
dir: /sys/src/cmd/jam/plan9.acid/
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;