665 lines
10 KiB
Plaintext
665 lines
10 KiB
Plaintext
sizeof_1_ = 8;
|
|
aggr _1_
|
|
{
|
|
'D' 0 llength;
|
|
'D' 4 hlength;
|
|
};
|
|
|
|
defn
|
|
_1_(addr) {
|
|
complex _1_ addr;
|
|
print(" llength ", addr.llength, "\n");
|
|
print(" hlength ", addr.hlength, "\n");
|
|
};
|
|
|
|
sizeof_2_ = 8;
|
|
aggr _2_
|
|
{
|
|
'V' 0 length;
|
|
{
|
|
'D' 0 llength;
|
|
'D' 4 hlength;
|
|
};
|
|
};
|
|
|
|
defn
|
|
_2_(addr) {
|
|
complex _2_ addr;
|
|
print(" length ", addr.length, "\n");
|
|
print("_1_ {\n");
|
|
_1_(addr+0);
|
|
print("}\n");
|
|
};
|
|
|
|
UTFmax = 3;
|
|
Runesync = 128;
|
|
Runeself = 128;
|
|
Runeerror = 128;
|
|
sizeofFconv = 24;
|
|
aggr Fconv
|
|
{
|
|
'X' 0 out;
|
|
'X' 4 eout;
|
|
'D' 8 f1;
|
|
'D' 12 f2;
|
|
'D' 16 f3;
|
|
'D' 20 chr;
|
|
};
|
|
|
|
defn
|
|
Fconv(addr) {
|
|
complex Fconv addr;
|
|
print(" out ", addr.out\X, "\n");
|
|
print(" eout ", addr.eout\X, "\n");
|
|
print(" f1 ", addr.f1, "\n");
|
|
print(" f2 ", addr.f2, "\n");
|
|
print(" f3 ", addr.f3, "\n");
|
|
print(" chr ", addr.chr, "\n");
|
|
};
|
|
|
|
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");
|
|
};
|
|
|
|
RFNAMEG = 1;
|
|
RFENVG = 2;
|
|
RFFDG = 4;
|
|
RFNOTEG = 8;
|
|
RFPROC = 16;
|
|
RFMEM = 32;
|
|
RFNOWAIT = 64;
|
|
RFCNAMEG = 1024;
|
|
RFCENVG = 2048;
|
|
RFCFDG = 4096;
|
|
RFREND = 8192;
|
|
sizeofQid = 8;
|
|
aggr Qid
|
|
{
|
|
'U' 0 path;
|
|
'U' 4 vers;
|
|
};
|
|
|
|
defn
|
|
Qid(addr) {
|
|
complex Qid addr;
|
|
print(" path ", addr.path, "\n");
|
|
print(" vers ", addr.vers, "\n");
|
|
};
|
|
|
|
sizeofDir = 116;
|
|
aggr Dir
|
|
{
|
|
'a' 0 name;
|
|
'a' 28 uid;
|
|
'a' 56 gid;
|
|
Qid 84 qid;
|
|
'U' 92 mode;
|
|
'D' 96 atime;
|
|
'D' 100 mtime;
|
|
{
|
|
'V' 104 length;
|
|
{
|
|
'D' 104 llength;
|
|
'D' 108 hlength;
|
|
};
|
|
};
|
|
'u' 112 type;
|
|
'u' 114 dev;
|
|
};
|
|
|
|
defn
|
|
Dir(addr) {
|
|
complex Dir addr;
|
|
print(" name ", addr.name, "\n");
|
|
print(" uid ", addr.uid, "\n");
|
|
print(" gid ", addr.gid, "\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("_2_ {\n");
|
|
_2_(addr+104);
|
|
print("}\n");
|
|
print(" type ", addr.type, "\n");
|
|
print(" dev ", addr.dev, "\n");
|
|
};
|
|
|
|
sizeofWaitmsg = 112;
|
|
aggr Waitmsg
|
|
{
|
|
'a' 0 pid;
|
|
'a' 12 time;
|
|
'a' 48 msg;
|
|
};
|
|
|
|
defn
|
|
Waitmsg(addr) {
|
|
complex Waitmsg addr;
|
|
print(" pid ", addr.pid, "\n");
|
|
print(" time ", addr.time, "\n");
|
|
print(" msg ", addr.msg, "\n");
|
|
};
|
|
|
|
Bsize = 8192;
|
|
Bungetsize = 4;
|
|
Bmagic = 3227993;
|
|
Beof = -1;
|
|
Bbad = -2;
|
|
Binactive = 0;
|
|
Bractive = 1;
|
|
Bwactive = 2;
|
|
Bracteof = 3;
|
|
sizeofBiobufhdr = 52;
|
|
aggr Biobufhdr
|
|
{
|
|
'D' 0 icount;
|
|
'D' 4 ocount;
|
|
'D' 8 rdline;
|
|
'D' 12 runesize;
|
|
'D' 16 state;
|
|
'D' 20 fid;
|
|
'D' 24 flag;
|
|
'V' 28 offset;
|
|
'D' 36 bsize;
|
|
'X' 40 bbuf;
|
|
'X' 44 ebuf;
|
|
'X' 48 gbuf;
|
|
};
|
|
|
|
defn
|
|
Biobufhdr(addr) {
|
|
complex Biobufhdr addr;
|
|
print(" icount ", addr.icount, "\n");
|
|
print(" ocount ", addr.ocount, "\n");
|
|
print(" rdline ", addr.rdline, "\n");
|
|
print(" runesize ", addr.runesize, "\n");
|
|
print(" state ", addr.state, "\n");
|
|
print(" fid ", addr.fid, "\n");
|
|
print(" flag ", addr.flag, "\n");
|
|
print(" offset ", addr.offset, "\n");
|
|
print(" bsize ", addr.bsize, "\n");
|
|
print(" bbuf ", addr.bbuf\X, "\n");
|
|
print(" ebuf ", addr.ebuf\X, "\n");
|
|
print(" gbuf ", addr.gbuf\X, "\n");
|
|
};
|
|
|
|
sizeofBiobuf = 8248;
|
|
aggr Biobuf
|
|
{
|
|
{
|
|
'D' 0 icount;
|
|
'D' 4 ocount;
|
|
'D' 8 rdline;
|
|
'D' 12 runesize;
|
|
'D' 16 state;
|
|
'D' 20 fid;
|
|
'D' 24 flag;
|
|
'V' 28 offset;
|
|
'D' 36 bsize;
|
|
'X' 40 bbuf;
|
|
'X' 44 ebuf;
|
|
'X' 48 gbuf;
|
|
};
|
|
'a' 52 b;
|
|
};
|
|
|
|
defn
|
|
Biobuf(addr) {
|
|
complex Biobuf addr;
|
|
print("Biobufhdr {\n");
|
|
Biobufhdr(addr+0);
|
|
print("}\n");
|
|
print(" b ", addr.b, "\n");
|
|
};
|
|
|
|
sizeof_3_ = 4;
|
|
aggr _3_
|
|
{
|
|
'X' 0 sp;
|
|
'X' 0 rsp;
|
|
};
|
|
|
|
defn
|
|
_3_(addr) {
|
|
complex _3_ addr;
|
|
print(" sp ", addr.sp\X, "\n");
|
|
print(" rsp ", addr.rsp\X, "\n");
|
|
};
|
|
|
|
sizeof_4_ = 4;
|
|
aggr _4_
|
|
{
|
|
'X' 0 ep;
|
|
'X' 0 rep;
|
|
};
|
|
|
|
defn
|
|
_4_(addr) {
|
|
complex _4_ addr;
|
|
print(" ep ", addr.ep\X, "\n");
|
|
print(" rep ", addr.rep\X, "\n");
|
|
};
|
|
|
|
sizeofResub = 8;
|
|
aggr Resub
|
|
{
|
|
{
|
|
'X' 0 sp;
|
|
'X' 0 rsp;
|
|
};
|
|
{
|
|
'X' 4 ep;
|
|
'X' 4 rep;
|
|
};
|
|
};
|
|
|
|
defn
|
|
Resub(addr) {
|
|
complex Resub addr;
|
|
print("_3_ {\n");
|
|
_3_(addr+0);
|
|
print("}\n");
|
|
print("_4_ {\n");
|
|
_4_(addr+4);
|
|
print("}\n");
|
|
};
|
|
|
|
sizeofReclass = 132;
|
|
aggr Reclass
|
|
{
|
|
'X' 0 end;
|
|
'a' 4 spans;
|
|
};
|
|
|
|
defn
|
|
Reclass(addr) {
|
|
complex Reclass addr;
|
|
print(" end ", addr.end\X, "\n");
|
|
print(" spans ", addr.spans, "\n");
|
|
};
|
|
|
|
sizeof_5_ = 4;
|
|
aggr _5_
|
|
{
|
|
'A' Reclass 0 cp;
|
|
'u' 0 r;
|
|
'D' 0 subid;
|
|
'X' 0 right;
|
|
};
|
|
|
|
defn
|
|
_5_(addr) {
|
|
complex _5_ addr;
|
|
print(" cp ", addr.cp\X, "\n");
|
|
print(" r ", addr.r, "\n");
|
|
print(" subid ", addr.subid, "\n");
|
|
print(" right ", addr.right\X, "\n");
|
|
};
|
|
|
|
sizeof_6_ = 4;
|
|
aggr _6_
|
|
{
|
|
'X' 0 left;
|
|
'X' 0 next;
|
|
};
|
|
|
|
defn
|
|
_6_(addr) {
|
|
complex _6_ addr;
|
|
print(" left ", addr.left\X, "\n");
|
|
print(" next ", addr.next\X, "\n");
|
|
};
|
|
|
|
sizeofReinst = 12;
|
|
aggr Reinst
|
|
{
|
|
'D' 0 type;
|
|
{
|
|
'A' Reclass 4 cp;
|
|
'u' 4 r;
|
|
'D' 4 subid;
|
|
'A' Reinst 4 right;
|
|
};
|
|
{
|
|
'A' Reinst 8 left;
|
|
'A' Reinst 8 next;
|
|
};
|
|
};
|
|
|
|
defn
|
|
Reinst(addr) {
|
|
complex Reinst addr;
|
|
print(" type ", addr.type, "\n");
|
|
print("_5_ {\n");
|
|
_5_(addr+4);
|
|
print("}\n");
|
|
print("_6_ {\n");
|
|
_6_(addr+8);
|
|
print("}\n");
|
|
};
|
|
|
|
sizeofReprog = 2176;
|
|
aggr Reprog
|
|
{
|
|
'A' Reinst 0 startinst;
|
|
'a' 4 class;
|
|
'a' 2116 firstinst;
|
|
};
|
|
|
|
defn
|
|
Reprog(addr) {
|
|
complex Reprog addr;
|
|
print(" startinst ", addr.startinst\X, "\n");
|
|
print(" class ", addr.class, "\n");
|
|
print(" firstinst ", addr.firstinst, "\n");
|
|
};
|
|
|
|
complex Biobuf bout;
|
|
sizeofBufblock = 16;
|
|
aggr Bufblock
|
|
{
|
|
'A' Bufblock 0 next;
|
|
'X' 4 start;
|
|
'X' 8 end;
|
|
'X' 12 current;
|
|
};
|
|
|
|
defn
|
|
Bufblock(addr) {
|
|
complex Bufblock addr;
|
|
print(" next ", addr.next\X, "\n");
|
|
print(" start ", addr.start\X, "\n");
|
|
print(" end ", addr.end\X, "\n");
|
|
print(" current ", addr.current\X, "\n");
|
|
};
|
|
|
|
sizeofWord = 8;
|
|
aggr Word
|
|
{
|
|
'X' 0 s;
|
|
'A' Word 4 next;
|
|
};
|
|
|
|
defn
|
|
Word(addr) {
|
|
complex Word addr;
|
|
print(" s ", addr.s\X, "\n");
|
|
print(" next ", addr.next\X, "\n");
|
|
};
|
|
|
|
sizeofEnvy = 8;
|
|
aggr Envy
|
|
{
|
|
'X' 0 name;
|
|
'A' Word 4 values;
|
|
};
|
|
|
|
defn
|
|
Envy(addr) {
|
|
complex Envy addr;
|
|
print(" name ", addr.name\X, "\n");
|
|
print(" values ", addr.values\X, "\n");
|
|
};
|
|
|
|
complex Envy envy;
|
|
sizeofRule = 44;
|
|
aggr Rule
|
|
{
|
|
'X' 0 target;
|
|
'A' Word 4 $tail;
|
|
'X' 8 recipe;
|
|
'd' 12 attr;
|
|
'd' 14 line;
|
|
'X' 16 file;
|
|
'A' Word 20 alltargets;
|
|
'D' 24 rule;
|
|
'A' Reprog 28 pat;
|
|
'X' 32 prog;
|
|
'A' Rule 36 chain;
|
|
'A' Rule 40 next;
|
|
};
|
|
|
|
defn
|
|
Rule(addr) {
|
|
complex Rule addr;
|
|
print(" target ", addr.target\X, "\n");
|
|
print(" $tail ", addr.$tail\X, "\n");
|
|
print(" recipe ", addr.recipe\X, "\n");
|
|
print(" attr ", addr.attr, "\n");
|
|
print(" line ", addr.line, "\n");
|
|
print(" file ", addr.file\X, "\n");
|
|
print(" alltargets ", addr.alltargets\X, "\n");
|
|
print(" rule ", addr.rule, "\n");
|
|
print(" pat ", addr.pat\X, "\n");
|
|
print(" prog ", addr.prog\X, "\n");
|
|
print(" chain ", addr.chain\X, "\n");
|
|
print(" next ", addr.next\X, "\n");
|
|
};
|
|
|
|
complex Rule rules;
|
|
complex Rule metarules;
|
|
complex Rule patrule;
|
|
sizeofArc = 64;
|
|
aggr Arc
|
|
{
|
|
'd' 0 flag;
|
|
'X' 4 n;
|
|
'A' Rule 8 r;
|
|
'X' 12 stem;
|
|
'X' 16 prog;
|
|
'a' 20 match;
|
|
'A' Arc 60 next;
|
|
};
|
|
|
|
defn
|
|
Arc(addr) {
|
|
complex Arc addr;
|
|
print(" flag ", addr.flag, "\n");
|
|
print(" n ", addr.n\X, "\n");
|
|
print(" r ", addr.r\X, "\n");
|
|
print(" stem ", addr.stem\X, "\n");
|
|
print(" prog ", addr.prog\X, "\n");
|
|
print(" match ", addr.match, "\n");
|
|
print(" next ", addr.next\X, "\n");
|
|
};
|
|
|
|
sizeofNode = 20;
|
|
aggr Node
|
|
{
|
|
'X' 0 name;
|
|
'D' 4 time;
|
|
'u' 8 flags;
|
|
'A' Arc 12 prereqs;
|
|
'A' Node 16 next;
|
|
};
|
|
|
|
defn
|
|
Node(addr) {
|
|
complex Node addr;
|
|
print(" name ", addr.name\X, "\n");
|
|
print(" time ", addr.time, "\n");
|
|
print(" flags ", addr.flags, "\n");
|
|
print(" prereqs ", addr.prereqs\X, "\n");
|
|
print(" next ", addr.next\X, "\n");
|
|
};
|
|
|
|
sizeofJob = 40;
|
|
aggr Job
|
|
{
|
|
'A' Rule 0 r;
|
|
'A' Node 4 n;
|
|
'X' 8 stem;
|
|
'X' 12 match;
|
|
'A' Word 16 p;
|
|
'A' Word 20 np;
|
|
'A' Word 24 t;
|
|
'A' Word 28 at;
|
|
'D' 32 nproc;
|
|
'A' Job 36 next;
|
|
};
|
|
|
|
defn
|
|
Job(addr) {
|
|
complex Job addr;
|
|
print(" r ", addr.r\X, "\n");
|
|
print(" n ", addr.n\X, "\n");
|
|
print(" stem ", addr.stem\X, "\n");
|
|
print(" match ", addr.match\X, "\n");
|
|
print(" p ", addr.p\X, "\n");
|
|
print(" np ", addr.np\X, "\n");
|
|
print(" t ", addr.t\X, "\n");
|
|
print(" at ", addr.at\X, "\n");
|
|
print(" nproc ", addr.nproc, "\n");
|
|
print(" next ", addr.next\X, "\n");
|
|
};
|
|
|
|
complex Job jobs;
|
|
sizeofSymtab = 16;
|
|
aggr Symtab
|
|
{
|
|
'd' 0 space;
|
|
'X' 4 name;
|
|
'X' 8 value;
|
|
'A' Symtab 12 next;
|
|
};
|
|
|
|
defn
|
|
Symtab(addr) {
|
|
complex Symtab addr;
|
|
print(" space ", addr.space, "\n");
|
|
print(" name ", addr.name\X, "\n");
|
|
print(" value ", addr.value\X, "\n");
|
|
print(" next ", addr.next\X, "\n");
|
|
};
|
|
|
|
S_VAR = 0;
|
|
S_TARGET = 1;
|
|
S_TIME = 2;
|
|
S_PID = 3;
|
|
S_NODE = 4;
|
|
S_AGG = 5;
|
|
S_BITCH = 6;
|
|
S_NOEXPORT = 7;
|
|
S_OVERRIDE = 8;
|
|
S_OUTOFDATE = 9;
|
|
S_MAKEFILE = 10;
|
|
S_MAKEVAR = 11;
|
|
S_EXPORTED = 12;
|
|
S_BULKED = 13;
|
|
S_WESET = 14;
|
|
S_INTERNAL = 15;
|
|
complex Word readenv:w;
|
|
complex Word encodenulls:w;
|
|
complex Word encodenulls:$head;
|
|
complex Envy exportenv:e;
|
|
complex Word exportenv:w;
|
|
complex Symtab exportenv:sy;
|
|
complex Dir dirtime:d;
|
|
complex Waitmsg waitfor:wm;
|
|
complex Bufblock execsh:buf;
|
|
complex Envy execsh:e;
|
|
complex Envy pipecmd:e;
|
|
complex Dir chgtime:sbuf;
|
|
complex Resub rcopy:match;
|
|
complex Dir mkdirstat:buf;
|