## diffname ss/dat.h 1990/1223 ## diff -e /dev/null /n/bootesdump/1990/1223/sys/src/9/sparc/dat.h 0a typedef struct Alarm Alarm; typedef struct Block Block; typedef struct Blist Blist; typedef struct Chan Chan; typedef struct Conf Conf; typedef struct Dev Dev; typedef struct Dirtab Dirtab; typedef struct Env Env; typedef struct Envp Envp; typedef struct Envval Envval; typedef struct FFrame FFrame; typedef struct FPsave FPsave; typedef struct KMap KMap; typedef struct Label Label; typedef struct List List; typedef struct Lock Lock; typedef struct MMU MMU; typedef struct MMUCache MMUCache; typedef struct Mach Mach; typedef struct Mount Mount; typedef struct Mtab Mtab; typedef struct Note Note; typedef struct Orig Orig; typedef struct PTE PTE; typedef struct Page Page; typedef struct Pgrp Pgrp; typedef struct Proc Proc; typedef struct Qinfo Qinfo; typedef struct QLock QLock; typedef struct Queue Queue; typedef struct Ref Ref; typedef struct Rendez Rendez; typedef struct Seg Seg; typedef struct Service Service; typedef struct Stream Stream; typedef struct Ureg Ureg; typedef struct User User; typedef int Devgen(Chan*, Dirtab*, int, int, Dir*); struct List { void *next; }; struct Lock { char key; /* addr of sync bus semaphore */ ulong pc; }; struct Ref { Lock; int ref; }; struct QLock { Proc *head; /* next process waiting for object */ Proc *tail; /* last process waiting for object */ Lock use; /* to use object */ Lock queue; /* to access list */ }; struct Label { ulong sp; ulong pc; ushort sr; }; struct Alarm { List; Lock; int busy; long dt; /* may underflow in clock(); must be signed */ void (*f)(void*); void *arg; }; #define CHDIR 0x80000000L #define CHAPPEND 0x40000000L #define CHEXCL 0x20000000L struct Chan { QLock; /* general access */ Ref; union{ Chan *next; /* allocation */ ulong offset; /* in file */ }; ushort type; ushort dev; ushort mode; /* read/write */ ushort flag; Qid qid; Mount *mnt; /* mount point that derived Chan */ ulong mountid; int fid; /* for devmnt */ union { Stream *stream; /* for stream channels */ void *aux; Qid pgrpid; /* for #p/notepg */ }; Chan *mchan; /* channel to mounted server */ Qid mqid; /* qid of root of mount point */ }; struct FPsave { uchar type; uchar size; short reserved; char junk[212]; /* 68881: sizes 24, 180; 68882: 56, 212 */ char reg[3*4+8*12]; }; struct Conf { int nmach; /* processors */ int nproc; /* processes */ int npgrp; /* process groups */ ulong npage0; /* total physical pages of memory, bank 0 */ ulong npage1; /* total physical pages of memory, bank 1 */ ulong base0; /* base of bank 0 */ ulong base1; /* base of bank 1 */ ulong npage; /* total physical pages of memory */ ulong norig; /* origins */ ulong npte; /* contiguous page table entries */ ulong nmod; /* single (modifying) page table entries */ int nalarm; /* alarms */ int nchan; /* channels */ int nenv; /* distinct environment values */ int nenvchar; /* environment text storage */ int npgenv; /* environment files per process group */ int nmtab; /* mounted-upon channels per process group */ int nmount; /* mounts */ int nmntdev; /* mounted devices (devmnt.c) */ int nmntbuf; /* buffers for devmnt.c messages */ int nmnthdr; /* headers for devmnt.c messages */ int nstream; /* streams */ int nqueue; /* stream queues */ int nblock; /* stream blocks */ int nsrv; /* public servers (devsrv.c) */ int nbitmap; /* bitmap structs (devbit.c) */ int nbitbyte; /* bytes of bitmap data (devbit.c) */ int nfont; /* font structs (devbit.c) */ int nurp; /* max urp conversations */ int nasync; /* number of async protocol modules */ int npipe; /* number of pipes */ int nservice; /* number of services */ int nfsyschan; /* number of filsys open channels */ ulong maxialloc; /* maximum bytes used by ialloc */ int copymode; /* 0 is copy on write, 1 is copy on reference */ }; struct Dev { void (*reset)(void); void (*init)(void); Chan *(*attach)(char*); Chan *(*clone)(Chan*, Chan*); int (*walk)(Chan*, char*); void (*stat)(Chan*, char*); Chan *(*open)(Chan*, int); void (*create)(Chan*, char*, int, ulong); void (*close)(Chan*); long (*read)(Chan*, void*, long); long (*write)(Chan*, void*, long); void (*remove)(Chan*); void (*wstat)(Chan*, char*); }; struct Dirtab { char name[NAMELEN]; Qid qid; long length; long perm; }; struct Env { Lock; Envval *val; char name[NAMELEN]; Env *next; /* in chain of Envs for a pgrp */ int pgref; /* # pgrps pointing here */ }; struct Envp { Env *env; int chref; /* # chans from pgrp pointing here */ }; struct KMap { KMap *next; ulong pa; ulong va; }; #define VA(k) ((k)->va) struct Mach { int machno; /* physical id of processor */ ulong splpc; /* pc of last caller to splhi */ int mmask; /* 1<machno */ ulong ticks; /* of the clock since boot time */ Proc *proc; /* current process on this processor */ Proc *lproc; /* last process on this processor */ Label sched; /* scheduler wakeup */ Lock alarmlock; /* access to alarm list */ void *alarm; /* alarms bound to this clock */ int fpstate; /* state of fp registers on machine */ void (*intr)(ulong, ulong); /* !!Compatability with mips!! */ ulong cause; /* ... */ ulong pc; /* ... */ int stack[1]; }; struct Mount { Ref; /* also used as a lock when playing lists */ short term; /* terminates list */ ulong mountid; Mount *next; Chan *c; /* channel replacing underlying channel */ }; struct Mtab { Chan *c; /* channel mounted upon */ Mount *mnt; /* what's mounted upon it */ }; enum{ NUser, /* note provided externally */ NExit, /* process should exit */ NDebug, /* process should hang */ }; struct Note { char msg[ERRLEN]; int flag; /* whether system posted it */ }; struct Orig { Lock; Orig *next; /* for allocation */ ushort nproc; /* processes using it */ ushort npage; /* sum of refs of pages in it */ ushort flag; ulong va; /* va of 0th pte */ ulong npte; /* #pte's in list */ PTE *pte; Chan *chan; /* channel deriving segment (if open) */ ushort type; /* of channel (which could be non-open) */ Qid qid; Chan *mchan; Qid mqid; ulong minca; /* base of region in chan */ ulong maxca; /* end of region in chan */ }; struct Page { Orig *o; /* origin of segment owning page */ ulong va; /* virtual address */ ulong pa; /* physical address */ ushort ref; Page *next; Page *prev; }; struct Pgrp { Ref; /* also used as a lock when mounting */ Pgrp *next; int index; /* index in pgrp table */ ulong pgrpid; char user[NAMELEN]; int nmtab; /* highest active mount table entry, +1 */ int nenv; /* highest active env table entry, +1 */ Lock debug; /* single access via devproc.c */ Mtab *mtab; Envp *etab; }; struct PTE { Proc *proc; /* process owning this PTE (0 in Orig) */ PTE *nextmod; /* next at this va */ PTE *nextva; /* next in this proc at higher va */ Page *page; }; struct Rendez { Lock; Proc *p; }; struct Seg { Proc *proc; /* process owning this segment */ Orig *o; /* root list of pte's */ ulong minva; /* va of 0th pte (not necessarily Seg->o->va) */ ulong maxva; /* va of last pte */ PTE *mod; /* list of modified pte's */ ulong pad[3]; /**/ }; struct Proc { Label sched; Mach *mach; /* machine running this proc */ char text[NAMELEN]; Proc *rnext; /* next process in run queue */ Proc *qnext; /* next process on queue for a QLock */ QLock *qlock; /* address of qlock being queued for DEBUG */ int state; int spin; /* spinning instead of unscheduled */ Page *upage; /* BUG: should be unlinked from page list */ Seg seg[NSEG]; ulong bssend; /* initial top of bss seg */ ulong pid; int nchild; QLock wait; /* exiting children to be waited for */ ulong waitmsg; Proc *child; Proc *parent; Pgrp *pgrp; ulong parentpid; ulong time[6]; /* User, Sys, Real; child U, S, R */ short exiting; short insyscall; int fpstate; Lock debug; /* to access debugging elements of User */ Rendez *r; /* rendezvous point slept on */ Rendez sleep; /* place for tsleep and syssleep */ int wokeup; /* whether sleep was interrupted */ ulong pc; /* DEBUG only */ int kp; /* true if a kernel process */ int pidonmach[1]; /* !!Compatability with mips!! */ }; struct MMU { ulong va; ulong pa; }; #define NMMU 16 struct MMUCache { ulong next; MMU mmu[NMMU]; }; #define NERR 15 #define NNOTE 5 #define NFD 100 struct User { Proc *p; int nerrlab; Label errlab[NERR]; char error[ERRLEN]; FPsave fpsave; /* address of this is known by vdb */ char elem[NAMELEN]; /* last name element from namec */ Chan *slash; Chan *dot; Chan *fd[NFD]; int maxfd; /* highest fd in use */ /* * Rest of structure controlled by devproc.c and friends. * lock(&p->debug) to modify. */ Note note[NNOTE]; short nnote; short notified; /* sysnoted is due */ int (*notify)(void*, char*); MMUCache mc; void *ureg; }; /* * operations available to a queue */ struct Qinfo { void (*iput)(Queue*, Block*); /* input routine */ void (*oput)(Queue*, Block*); /* output routine */ void (*open)(Queue*, Stream*); void (*close)(Queue*); char *name; void (*reset)(void); /* initialization */ Qinfo *next; }; /* * We reference lance buffers via descriptors kept in host memory */ struct Block { Block *next; uchar *rptr; /* first unconsumed byte */ uchar *wptr; /* first empty byte */ uchar *lim; /* 1 past the end of the buffer */ uchar *base; /* start of the buffer */ uchar flags; uchar type; }; /* flag bits */ #define S_DELIM 0x80 #define S_CLASS 0x07 /* type values */ #define M_DATA 0 #define M_CTL 1 #define M_HANGUP 2 /* * a list of blocks */ struct Blist { Lock; Block *first; /* first data block */ Block *last; /* last data block */ long len; /* length of list in bytes */ int nb; /* number of blocks in list */ }; /* * a queue of blocks */ struct Queue { Blist; int flag; Qinfo *info; /* line discipline definition */ Queue *other; /* opposite direction, same line discipline */ Queue *next; /* next queue in the stream */ void (*put)(Queue*, Block*); QLock rlock; /* mutex for processes sleeping at r */ Rendez r; /* standard place to wait for flow control */ Rendez *rp; /* where flow control wakeups go to */ void *ptr; /* private info for the queue */ }; #define QHUNGUP 0x1 /* flag bit meaning the stream has been hung up */ #define QINUSE 0x2 #define QHIWAT 0x4 /* queue has gone past the high water mark */ #define QDEBUG 0x8 /* * a stream head */ struct Stream { QLock; /* structure lock */ short inuse; /* number of processes in stream */ short opens; /* number of processes with stream open */ ushort hread; /* number of reads after hangup */ ushort type; /* correlation with Chan */ ushort dev; /* ... */ ushort id; /* ... */ QLock rdlock; /* read lock */ Queue *procq; /* write queue at process end */ Queue *devq; /* read queue at device end */ }; #define RD(q) ((q)->other < (q) ? (q->other) : q) #define WR(q) ((q)->other > (q) ? (q->other) : q) #define GLOBAL(a) (((ulong)(a)) & 0x80000000) #define STREAMTYPE(x) ((x)&0x1f) #define STREAMID(x) (((x)&~CHDIR)>>5) #define STREAMQID(i,t) (((i)<<5)|(t)) #define PUTNEXT(q,b) (*(q)->next->put)((q)->next, b) #define BLEN(b) ((b)->wptr - (b)->rptr) #define QFULL(q) ((q)->flag & QHIWAT) #define FLOWCTL(q) { if(QFULL(q->next)) flowctl(q); } /* * stream file qid's & high water mark */ enum { Shighqid = STREAMQID(1,0) - 1, Sdataqid = Shighqid, Sctlqid = Sdataqid-1, Slowqid = Sctlqid, Streamhi= (9*1024), /* byte count high water mark */ Streambhi= 32, /* block count high water mark */ }; #define NSTUB 32 struct Service { Ref; Service *next; QLock alock; int die; Chan *inc; Chan *outc; char name[NAMELEN]; }; #define PRINTSIZE 256 extern register Mach *m; extern register User *u; /* * Process states */ enum { Dead = 0, Moribund, Zombie, Ready, Scheding, Running, Queueing, MMUing, Exiting, Inwait, Wakeme, Broken, }; extern char *statename[]; /* * Chan flags */ #define COPEN 1 /* for i/o */ #define CMOUNT 2 /* is result of a mount/bind */ #define CCREATE 4 /* permits creation if CMOUNT */ #define CCEXEC 8 /* close on exec */ #define CFREE 16 /* not in use */ /* * Proc.time */ enum { TUser, TSys, TReal, TCUser, TCSys, TCReal, }; /* * floating point registers */ enum { FPinit, FPactive, FPdirty, }; /* * Memory management */ #define SSEG 0 #define TSEG 1 #define DSEG 2 #define BSEG 3 #define ESEG 4 /* used by exec to build new stack */ #define OWRPERM 0x01 /* write permission */ #define OPURE 0x02 /* original data mustn't be written */ #define OCACHED 0x04 /* cached; don't discard on exit */ /* * Access types in namec */ enum { Aaccess, /* as in access, stat */ Atodir, /* as in chdir */ Aopen, /* for i/o */ Amount, /* to be mounted upon */ Acreate, /* file is to be created */ }; #define NUMSIZE 12 /* size of formatted number */ #define MACHP(n) (n==0? &mach0 : *(Mach**)0) extern Conf conf; extern ulong initcode[]; extern Dev devtab[]; extern char devchar[]; extern FPsave initfp; extern Mach mach0; extern char user[NAMELEN]; extern char *errstrtab[]; extern void (*kprofp)(ulong); /* * parameters for sysproc.c */ #define AOUT_MAGIC A_MAGIC #define ENTRYOFFSET 0 . ## diffname ss/dat.h 1990/1226 ## diff -e /n/bootesdump/1990/1223/sys/src/9/sparc/dat.h /n/bootesdump/1990/1226/sys/src/9/sparc/dat.h 612c #define AOUT_MAGIC K_MAGIC . 514,515c extern register Mach *m; /* R6 */ extern register User *u; /* R5 */ . 350c int pidonmach[MAXMACH]; /* TLB pid on each mmu */ . 326d 221a char pidhere[NCONTEXT]; /* is this tlbpid possibly in this mmu? */ int lastpid; /* last pid allocated on this machine */ Proc *pidproc[NCONTEXT]; /* process that owns this pid on this mach */ . 219c void (*intr)(ulong, ulong); /* !!Compatibility with mips!! */ . 70d 48c ulong key; . ## diffname ss/dat.h 1990/1231 ## diff -e /n/bootesdump/1990/1226/sys/src/9/sparc/dat.h /n/bootesdump/1990/1231/sys/src/9/sparc/dat.h 511a /* * system dependent lance stuff * filled by lancesetup() */ struct Lance { ushort lognrrb; /* log2 number of receive ring buffers */ ushort logntrb; /* log2 number of xmit ring buffers */ ushort nrrb; /* number of receive ring buffers */ ushort ntrb; /* number of xmit ring buffers */ ushort *rap; /* lance address register */ ushort *rdp; /* lance data register */ uchar ea[6]; /* our ether addr */ int sep; /* separation between shorts in lance ram as seen by host */ ushort *lanceram; /* start of lance ram as seen by host */ Lancemem *lm; /* start of lance ram as seen by lance */ Etherpkt *rp; /* receive buffers (host address) */ Etherpkt *tp; /* transmit buffers (host address) */ Etherpkt *lrp; /* receive buffers (lance address) */ Etherpkt *ltp; /* transmit buffers (lance address) */ }; . 499a /* * Ethernet packet buffers. */ struct Etherpkt { uchar d[6]; uchar s[6]; uchar type[2]; uchar data[1500]; uchar crc[4]; }; /* * nonet constants */ enum { Nnomsg = 128, /* max number of outstanding messages */ Nnocalls = 5, /* maximum queued incoming calls */ }; /* * generic nonet header */ struct Nohdr { uchar circuit[3]; /* circuit number */ uchar flag; uchar mid; /* message id */ uchar ack; /* piggy back ack */ uchar remain[2]; /* count of remaing bytes of data */ uchar sum[2]; /* checksum (0 means none) */ }; #define NO_HDRSIZE 10 #define NO_NEWCALL 0x1 /* flag bit marking a new circuit */ #define NO_HANGUP 0x2 /* flag bit requesting hangup */ #define NO_ACKME 0x4 /* acknowledge this message */ #define NO_SERVICE 0x8 /* message includes a service name */ /* * a buffer describing a nonet message */ struct Nomsg { Blist; Rendez r; int mid; /* sequence number */ int rem; /* remaining */ long time; int acked; int inuse; }; /* * one exists for each Nonet conversation. */ struct Noconv { QLock; Stream *s; Queue *rq; /* input queue */ int version; /* incremented each time struct is changed */ int state; /* true if listening */ Nomsg in[Nnomsg]; /* messages being received */ int rcvcircuit; /* circuit number of incoming packets */ uchar ack[Nnomsg]; /* acknowledgements waiting to be sent */ int afirst; int anext; QLock xlock; /* one trasmitter at a time */ Rendez r; /* process waiting for an output mid */ Nomsg ctl; /* for control messages */ Nomsg ackmsg; /* for acknowledge messages */ QLock mlock; /* lock for out */ Nomsg out[Nnomsg]; /* messages being sent */ int first; /* first unacknowledged message */ int next; /* next message buffer to use */ int lastacked; /* last message acked */ Block *media; /* prototype media output header */ Nohdr *hdr; /* nonet header inside of media header */ Noifc *ifc; char raddr[NAMELEN]; /* remote address */ char ruser[NAMELEN]; /* remote user */ char addr[NAMELEN]; /* local address */ int rexmit; /* statistics */ int retry; int bad; int sent; int rcvd; }; /* * an incoming call */ struct Nocall { Block *msg; char raddr[NAMELEN]; long circuit; }; /* * a nonet interface. one exists for every stream that a * nonet multiplexor is pushed onto. */ struct Noifc { Lock; int ref; char name[NAMELEN]; /* interface name */ Queue *wq; /* interface output queue */ Noconv *conv; /* * media dependent */ int maxtu; /* maximum transfer unit */ int mintu; /* minimum transfer unit */ int hsize; /* media header size */ void (*connect)(Noconv *, char *); /* * calls and listeners */ QLock listenl; Rendez listenr; Lock lock; Nocall call[Nnocalls]; int rptr; int wptr; }; . 148a ulong nnoifc; /* number of nonet interfaces */ ulong nnoconv; /* number of nonet conversations/ifc */ . 22a typedef struct Nomsg Nomsg; typedef struct Nocall Nocall; . 21a typedef struct Noconv Noconv; typedef struct Nohdr Nohdr; typedef struct Noifc Noifc; . 13a typedef struct Lance Lance; typedef struct Lancemem Lancemem; . 10a typedef struct Etherpkt Etherpkt; . ## diffname ss/dat.h 1991/0109 ## diff -e /n/bootesdump/1990/1231/sys/src/9/sparc/dat.h /n/bootesdump/1991/0109/sys/src/9/sparc/dat.h 663a ushort busctl; /* bus control bits */ . 650a /* * LANCE CSR3 (bus control bits) */ #define BSWP 0x4 #define ACON 0x2 #define BCON 0x1 . 346c Waitmsg waitmsg; /* this is large but must be addressable */ . ## diffname ss/dat.h 1991/0110 ## diff -e /n/bootesdump/1991/0109/sys/src/9/sparc/dat.h /n/bootesdump/1991/0110/sys/src/9/sparc/dat.h 775a extern uchar *intrreg; . 233c Proc *pidproc[NTLBPID]; /* process that owns this pid on this mach */ . 231c char pidhere[NTLBPID]; /* is this tlbpid possibly in this mmu? */ . ## diffname ss/dat.h 1991/0112 ## diff -e /n/bootesdump/1991/0110/sys/src/9/sparc/dat.h /n/bootesdump/1991/0112/sys/src/9/sparc/dat.h 361a int nmmuseg; /* number of segments active in mmu */ . ## diffname ss/dat.h 1991/01151 ## diff -e /n/bootesdump/1991/0112/sys/src/9/sparc/dat.h /n/bootesdump/1991/01151/sys/src/9/sparc/dat.h 737c FPinactive, . 120,124c long fsr; long fpreg[32+1]; /* +1 so we can double-align */ . ## diffname ss/dat.h 1991/0118 ## diff -e /n/bootesdump/1991/01151/sys/src/9/sparc/dat.h /n/bootesdump/1991/0118/sys/src/9/sparc/dat.h 552c ulong time; . ## diffname ss/dat.h 1991/0119 ## diff -e /n/bootesdump/1991/0118/sys/src/9/sparc/dat.h /n/bootesdump/1991/0119/sys/src/9/sparc/dat.h 542a #define NO_RESET 0x10 /* reset the connection */ . ## diffname ss/dat.h 1991/0206 ## diff -e /n/bootesdump/1991/0201/sys/src/9/sparc/dat.h /n/bootesdump/1991/0206/sys/src/9/slc/dat.h 550d ## diffname ss/dat.h 1991/0209 ## diff -e /n/bootesdump/1991/0206/sys/src/9/slc/dat.h /n/bootesdump/1991/0209/sys/src/9/slc/dat.h 225,227d ## diffname ss/dat.h 1991/0212 ## diff -e /n/bootesdump/1991/0209/sys/src/9/slc/dat.h /n/bootesdump/1991/0212/sys/src/9/slc/dat.h 296c QLock debug; /* single access via devproc.c */ . ## diffname ss/dat.h 1991/0318 ## diff -e /n/bootesdump/1991/0212/sys/src/9/slc/dat.h /n/bootesdump/1991/0318/sys/src/9/slc/dat.h 514a #define ETHERMINMTU 60 /* minimum transmit size */ . ## diffname ss/dat.h 1991/0328 ## diff -e /n/bootesdump/1991/0318/sys/src/9/slc/dat.h /n/bootesdump/1991/0328/sys/src/9/slc/dat.h 517,634d ## diffname ss/dat.h 1991/0407 ## diff -e /n/bootesdump/1991/0328/sys/src/9/slc/dat.h /n/bootesdump/1991/0407/sys/src/9/slc/dat.h 515c #define ETHERMINTU 60 /* minimum transmit size */ #define ETHERMAXTU 1514 /* maximum transmit size */ #define ETHERHDRSIZE 14 /* size of an ethernet header */ . ## diffname ss/dat.h 1991/0411 ## diff -e /n/bootesdump/1991/0407/sys/src/9/slc/dat.h /n/bootesdump/1991/0411/sys/src/9/slc/dat.h 480a Block *err; /* error message from down stream */ . 176,177c long (*read)(Chan*, void*, long, ulong); long (*write)(Chan*, void*, long, ulong ); . ## diffname ss/dat.h 1991/0413 ## diff -e /n/bootesdump/1991/0411/sys/src/9/slc/dat.h /n/bootesdump/1991/0413/sys/src/9/slc/dat.h 95c QLock rdl; QLock wrl; . ## diffname ss/dat.h 1991/0419 ## diff -e /n/bootesdump/1991/0413/sys/src/9/slc/dat.h /n/bootesdump/1991/0419/sys/src/9/slc/dat.h 180a Chan *(*clwalk)(Chan*, char*); . ## diffname ss/dat.h 1991/0427 ## diff -e /n/bootesdump/1991/0419/sys/src/9/slc/dat.h /n/bootesdump/1991/0427/sys/src/9/slc/dat.h 229a int tlbfault; int tlbpurge; int pfault; int cs; int syscall; int spinlock; int intr; . 181d 113a int mntindex; /* for devmnt */ . ## diffname ss/dat.h 1991/0428 ## diff -e /n/bootesdump/1991/0427/sys/src/9/slc/dat.h /n/bootesdump/1991/0428/sys/src/9/slc/dat.h 669,676d 579,667d 574,575d 411,543d 406d 242,382d 184,206c /* * machine dependent definitions not used by ../port/dat.h */ . 167,182c #include "../port/portdat.h" . 90,119d 82,87c FPinit, FPactive, FPinactive, . 80c /* * floating point registers */ enum . 60,73d 53a extern Mach mach0; extern void (*kprofp)(ulong); /* * parameters for sysproc.c */ #define AOUT_MAGIC K_MAGIC /* * machine dependent definitions used by ../port/dat.h */ . 49,52c #define MACHP(n) (n==0? &mach0 : *(Mach**)0) . 47d 23,43d 21d 18d 6,11d 1,4d ## diffname ss/dat.h 1991/0507 ## diff -e /n/bootesdump/1991/0428/sys/src/9/slc/dat.h /n/bootesdump/1991/0507/sys/src/9/slc/dat.h 95a }; /* * mmu goo in the Proc structure */ struct PMMU { int pidonmach[MAXMACH]; int nmmuseg; /* number of segments active in mmu */ . 9c typedef struct PMMU PMMU; . ## diffname ss/dat.h 1991/0604 ## diff -e /n/bootesdump/1991/0507/sys/src/9/slc/dat.h /n/bootesdump/1991/0604/sys/src/9/slc/dat.h 207a struct { Lock; short machs; short exiting; }active; . 109a * character based IO (mouse, keyboard, console screen) */ #define NQ 4096 struct IOQ { Lock; uchar buf[NQ]; uchar *in; uchar *out; int state; Rendez r; union{ void (*puts)(IOQ*, void*, int); /* output */ int (*putc)(IOQ*, int); /* input */ }; void *ptr; }; struct KIOQ { QLock; IOQ; int repeat; int c; int count; }; extern IOQ lineq; extern IOQ printq; extern IOQ mouseq; extern KIOQ kbdq; /* . 3a typedef struct IOQ IOQ; typedef struct KIOQ KIOQ; . ## diffname ss/dat.h 1991/0606 ## diff -e /n/bootesdump/1991/0604/sys/src/9/slc/dat.h /n/bootesdump/1991/0606/sys/src/9/slc/dat.h 248a /* * character based IO (mouse, keyboard, console screen) */ typedef struct IOQ IOQ; typedef struct KIOQ KIOQ; #define NQ 4096 struct IOQ { Lock; uchar buf[NQ]; uchar *in; uchar *out; int state; Rendez r; union{ void (*puts)(IOQ*, void*, int); /* output */ int (*putc)(IOQ*, int); /* input */ }; void *ptr; }; struct KIOQ { QLock; IOQ; int repeat; int c; int count; }; extern IOQ lineq; extern IOQ printq; extern IOQ mouseq; extern KIOQ kbdq; . 112,143d 4,5d ## diffname ss/dat.h 1991/0607 ## diff -e /n/bootesdump/1991/0606/sys/src/9/slc/dat.h /n/bootesdump/1991/0607/sys/src/9/slc/dat.h 215,249d ## diffname ss/dat.h 1991/0608 ## diff -e /n/bootesdump/1991/0607/sys/src/9/slc/dat.h /n/bootesdump/1991/0608/sys/src/9/slc/dat.h 95a int cntrlp; /* panic on ^P */ . ## diffname ss/dat.h 1991/0706 ## diff -e /n/bootesdump/1991/0608/sys/src/9/slc/dat.h /n/bootesdump/1991/0706/sys/src/9/slc/dat.h 161,162d 150d 67,69c ulong nseg; /* number of segments */ ulong nimage; /* number of page cache image headers */ ulong npagetab; /* number of pte tables */ ulong nswap; /* number of swap blocks */ . ## diffname ss/dat.h 1991/0717 ## diff -e /n/bootesdump/1991/0706/sys/src/9/slc/dat.h /n/bootesdump/1991/0717/sys/src/9/slc/dat.h 167a Note lastnote; . 164a ulong svpsr; . ## diffname ss/dat.h 1991/0926 ## diff -e /n/bootesdump/1991/0717/sys/src/9/slc/dat.h /n/bootesdump/1991/0926/sys/src/9/slc/dat.h 96a ulong ipif; /* Ip protocol interfaces */ ulong ip; /* Ip conversations per interface */ ulong arp; /* Arp table size */ ulong frag; /* Ip fragment assemble queue size */ . ## diffname ss/dat.h 1991/1107 ## diff -e /n/bootesdump/1991/0926/sys/src/9/slc/dat.h /n/bootesdump/1991/1107/sys/src/9/slc/dat.h 101a int dkif; /* number of datakit interfaces */ . ## diffname ss/dat.h 1991/1111 ## diff -e /n/bootesdump/1991/1107/sys/src/9/slc/dat.h /n/bootesdump/1991/1111/sys/src/9/slc/dat.h 176a void *dbgreg; /* User registers for debugging in proc */ . ## diffname ss/dat.h 1991/1112 ## diff -e /n/bootesdump/1991/1111/sys/src/9/slc/dat.h /n/bootesdump/1991/1112/sys/src/9/slc/dat.h 148c int load; . ## diffname ss/dat.h 1991/1113 ## diff -e /n/bootesdump/1991/1112/sys/src/9/slc/dat.h /n/bootesdump/1991/1113/sys/src/9/slc/dat.h 162d 158a /* &fpsave must be 4 mod 8 */ FPsave fpsave; /* address of this is known by db */ . 54c long fpreg[32]; . ## diffname ss/dat.h 1991/1115 ## diff -e /n/bootesdump/1991/1113/sys/src/9/slc/dat.h /n/bootesdump/1991/1115/sys/src/9/slc/dat.h 54a long pad; /* so fsr can be guaranteed at 4 mod 8 */ . ## diffname ss/dat.h 1992/0102 ## diff -e /n/bootesdump/1991/1115/sys/src/9/slc/dat.h /n/bootesdump/1992/0102/sys/src/9/slc/dat.h 179a ulong svr7; . ## diffname ss/dat.h 1992/0208 ## diff -e /n/bootesdump/1992/0102/sys/src/9/slc/dat.h /n/bootesdump/1992/0208/sys/src/9/slc/dat.h 88c int nsubfont; /* Gsubfont structs (devbit.c) */ . ## diffname ss/dat.h 1992/0209 ## diff -e /n/bootesdump/1992/0208/sys/src/9/slc/dat.h /n/bootesdump/1992/0209/sys/src/9/slc/dat.h 87a int nfont; /* GFont structs (devbit.c) */ . ## diffname ss/dat.h 1992/0228 ## diff -e /n/bootesdump/1992/0209/sys/src/9/slc/dat.h /n/bootesdump/1992/0228/sys/src/9/slc/dat.h 90,91d ## diffname ss/dat.h 1992/0619 ## diff -e /n/bootesdump/1992/0228/sys/src/9/slc/dat.h /n/bootesdump/1992/0619/sys/src/9/slc/dat.h 95d 71a ulong upages; /* number of user pages */ . ## diffname ss/dat.h 1992/0620 ## diff -e /n/bootesdump/1992/0619/sys/src/9/slc/dat.h /n/bootesdump/1992/0620/sys/src/9/slc/dat.h 94,95d 85d 78,82d 73,74d 70d 68d 62d ## diffname ss/dat.h 1992/0621 ## diff -e /n/bootesdump/1992/0620/sys/src/9/slc/dat.h /n/bootesdump/1992/0621/sys/src/9/slc/dat.h 82d ## diffname ss/dat.h 1992/0623 ## diff -e /n/bootesdump/1992/0621/sys/src/9/slc/dat.h /n/bootesdump/1992/0623/sys/src/9/slc/dat.h 70,79d ## diffname ss/dat.h 1992/0625 ## diff -e /n/bootesdump/1992/0623/sys/src/9/slc/dat.h /n/bootesdump/1992/0625/sys/src/9/slc/dat.h 142a Sargs s; . 78d 70,71d ## diffname ss/dat.h 1992/06271 ## diff -e /n/bootesdump/1992/0625/sys/src/9/slc/dat.h /n/bootesdump/1992/06271/sys/src/9/slc/dat.h 140d 133a int scallnr; /* sys call number - known by db */ Sargs s; /* address of this is known by db */ . ## diffname ss/dat.h 1992/0725 ## diff -e /n/bootesdump/1992/06271/sys/src/9/slc/dat.h /n/bootesdump/1992/0725/sys/src/9/slc/dat.h 75d ## diffname ss/dat.h 1992/0726 ## diff -e /n/bootesdump/1992/0725/sys/src/9/slc/dat.h /n/bootesdump/1992/0726/sys/src/9/slc/dat.h 55c struct{ ulong a; /* address */ ulong i; /* instruction */ }q[NFPQ]; . 50a #define NFPQ 4 /* just a guess */ . ## diffname ss/dat.h 1992/0727 ## diff -e /n/bootesdump/1992/0726/sys/src/9/slc/dat.h /n/bootesdump/1992/0727/sys/src/9/slc/dat.h 195a extern FPsave *initfpp; . ## diffname ss/dat.h 1992/0801 ## diff -e /n/bootesdump/1992/0727/sys/src/9/slc/dat.h /n/bootesdump/1992/0801/sys/src/9/slc/dat.h 66a int ss2; /* is a sparcstation 2 */ . ## diffname ss/dat.h 1992/0802 ## diff -e /n/bootesdump/1992/0801/sys/src/9/slc/dat.h /n/bootesdump/1992/0802/sys/src/9/slc/dat.h 126a int fpunsafe; /* FP unsaved */ int fptrap; /* FP trap occurred while unsafe */ . ## diffname ss/dat.h 1992/0804 ## diff -e /n/bootesdump/1992/0802/sys/src/9/slc/dat.h /n/bootesdump/1992/0804/sys/src/9/slc/dat.h 60a long fppc; /* for recursive traps only */ . ## diffname ss/dat.h 1992/0807 ## diff -e /n/bootesdump/1992/0807/sys/src/9/slc/dat.h /n/bootesdump/1992/0807/sys/src/9/ss/dat.h 207a enum { ScsiTestunit = 0x00, ScsiExtsens = 0x03, ScsiModesense = 0x1a, ScsiGetcap = 0x25, ScsiRead = 0x08, ScsiWrite = 0x0a, /* * data direction */ ScsiIn = 1, ScsiOut = 0, }; struct Scsibuf { void *virt; void *phys; Scsibuf *next; }; struct Scsidata { uchar *base; uchar *lim; uchar *ptr; }; struct Scsi { QLock; ulong pid; ushort target; ushort lun; ushort rflag; ushort status; Scsidata cmd; Scsidata data; Scsibuf *b; uchar *save; uchar cmdblk[16]; }; . 68c char ss2; /* is a sparcstation 2 */ char ss2cachebug; /* has sparcstation2 cache bug */ char monitor; /* has graphics monitor */ int ncontext; /* in mmu */ int npmeg; int vacsize; /* size of virtual address cache, in bytes */ int vaclinesize; /* size of cache line */ . 9a typedef struct Scsi Scsi; typedef struct Scsibuf Scsibuf; typedef struct Scsidata Scsidata; . ## diffname ss/dat.h 1992/0808 ## diff -e /n/bootesdump/1992/0807/sys/src/9/ss/dat.h /n/bootesdump/1992/0808/sys/src/9/ss/dat.h 217,261d 10,12d ## diffname ss/dat.h 1992/0810 ## diff -e /n/bootesdump/1992/0808/sys/src/9/ss/dat.h /n/bootesdump/1992/0810/sys/src/9/ss/dat.h 70d 67a ulong monitor; /* graphics monitor id; 0 for none */ . ## diffname ss/dat.h 1992/0911 ## diff -e /n/bootesdump/1992/0810/sys/src/9/ss/dat.h /n/bootesdump/1992/0911/sys/src/9/ss/dat.h 124,126c Ctx *cctx; /* current context */ List *clist; /* lru list of all contexts */ Pmeg *pmeg; /* array of allocatable pmegs */ int pfirst; /* index of first allocatable pmeg */ List *plist; /* lru list of non-kernel Pmeg's */ int needpmeg; /* a process needs a pmeg */ . 95,96c Ctx *ctxonmach[MAXMACH]; . 89a . 14a . 11a typedef struct List List; . 8a typedef struct Pmeg Pmeg; . 1a typedef struct Ctx Ctx; . ## diffname ss/dat.h 1993/0206 ## diff -e /n/bootesdump/1992/0911/sys/src/9/ss/dat.h /n/bootesdump/1993/0206/sys/src/9/ss/dat.h 88,91d ## diffname ss/dat.h 1993/0501 # deleted ## diff -e /n/bootesdump/1993/0206/sys/src/9/ss/dat.h /n/fornaxdump/1993/0501/sys/src/brazil/ss/dat.h 1,217d