Annotation of lucent/sys/src/9/gnot/dat.h, revision 1.1.1.1

1.1       root        1: typedef struct Conf    Conf;
                      2: typedef struct FFrame  FFrame;
                      3: typedef struct FPsave  FPsave;
                      4: typedef struct KMap    KMap;
                      5: typedef struct Label   Label;
                      6: typedef struct Lock    Lock;
                      7: typedef struct MMU     MMU;
                      8: typedef struct Mach    Mach;
                      9: typedef struct PMMU    PMMU;
                     10: typedef struct Portpage        Portpage;
                     11: typedef struct Ureg    Ureg;
                     12: typedef struct User    User;
                     13: 
                     14: #define        MACHP(n)        (n==0? &mach0 : *(Mach**)0)
                     15: 
                     16: extern Mach    mach0;
                     17: extern  void   (*kprofp)(ulong);
                     18: 
                     19: /*
                     20:  *  parameters for sysproc.c
                     21:  */
                     22: #define AOUT_MAGIC     A_MAGIC
                     23: 
                     24: /*
                     25:  *  machine dependent definitions used by ../port/dat.h
                     26:  */
                     27: 
                     28: struct Lock
                     29: {
                     30:        char    key;
                     31:        ulong   pc;
                     32:        ulong   sr;
                     33: };
                     34: 
                     35: enum
                     36: {
                     37:        FPinit,
                     38:        FPactive,
                     39:        FPdirty,
                     40: };
                     41: 
                     42: struct FPsave
                     43: {
                     44:        uchar   type;
                     45:        uchar   size;
                     46:        short   reserved;
                     47:        char    junk[212];      /* 68881: sizes 24, 180; 68882: 56, 212 */
                     48:        /* this offset known in db */
                     49:        char    reg[3*4+8*12];
                     50: };
                     51: 
                     52: struct Label
                     53: {
                     54:        ulong   sp;
                     55:        ulong   pc;
                     56:        ushort  sr;
                     57: };
                     58: 
                     59: /*
                     60:  *  MMU info included in the Proc structure
                     61:  */
                     62: struct PMMU
                     63: {
                     64:        int     pmmu_dummy;
                     65: };
                     66: 
                     67: struct Conf
                     68: {
                     69:        int     nmach;          /* processors */
                     70:        int     nproc;          /* processes */
                     71:        int     monitor;        /* has display */
                     72:        ulong   npage0;         /* total physical pages of memory, bank 0 */
                     73:        ulong   npage1;         /* total physical pages of memory, bank 1 */
                     74:        ulong   npage;
                     75:        ulong   base0;          /* base of bank 0 */
                     76:        ulong   base1;          /* base of bank 1 */
                     77:        ulong   upages;         /* user page pool */
                     78:        ulong   nimage;         /* number of page cache image headers */
                     79:        ulong   nswap;          /* number of swap blocks */
                     80:        int     nfsyschan;      /* number of filsys open channels */
                     81:        int     nisdn;          /* number of isdn interfaces */
                     82:        int     nlapd;          /* number of dragnet protocol modules */
                     83:        int     copymode;       /* 0 is copy on write, 1 is copy on reference */
                     84:        int     portispaged;    /* 1 if extended I/O port addresses */
                     85:        int     nconc;          /* number of datakit concentrators */
                     86: };
                     87: 
                     88: #include "../port/portdat.h"
                     89: 
                     90: /*
                     91:  *  machine dependent definitions not used by ../port/dat.h
                     92:  */
                     93: struct KMap
                     94: {
                     95:        KMap    *next;
                     96:        ulong   pa;
                     97:        ulong   va;
                     98: };
                     99: #define        VA(k)   ((k)->va)
                    100: 
                    101: struct Mach
                    102: {
                    103:        /* OFFSETS OF THE FOLLOWING KNOWN BY l.s */
                    104:        int     machno;                 /* physical id of processor */
                    105:        ulong   splpc;                  /* pc of last caller to splhi */
                    106: 
                    107:        /* ordering from here on irrelevant */
                    108:        ulong   ticks;                  /* of the clock since boot time */
                    109:        Proc    *proc;                  /* current process on this processor */
                    110:        Proc    *lproc;                 /* last process on this processor */
                    111:        Label   sched;                  /* scheduler wakeup */
                    112:        Lock    alarmlock;              /* access to alarm list */
                    113:        void    *alarm;                 /* alarms bound to this clock */
                    114:        int     fpstate;                /* state of fp registers on machine */
                    115: 
                    116:        int     tlbpurge;
                    117:        int     tlbfault;
                    118:        int     pfault;
                    119:        int     cs;
                    120:        int     syscall;
                    121:        int     load;
                    122:        int     intr;
                    123: 
                    124:        /* MUST BE LAST */
                    125:        int     stack[1];
                    126: };
                    127: 
                    128: /*
                    129:  *  gnot bus ports
                    130:  */
                    131: #define PORTSIZE       64
                    132: #define PORTSHIFT      6
                    133: #define PORTSELECT     PORT[32]
                    134: 
                    135: struct Portpage
                    136: {
                    137:        union{
                    138:                Lock;
                    139:                QLock;
                    140:        };
                    141:        int      select;
                    142: };
                    143: 
                    144: #define        NERR    25
                    145: #define        NNOTE   5
                    146: struct User
                    147: {
                    148:        Proc    *p;
                    149:        FPsave  fpsave;                 /* address of this is known by vdb */
                    150:        int     scallnr;                /* sys call number - known by db */
                    151:        Sargs   s;                      /* address of this is known by db */
                    152:        uchar   balusave[64];           /* #include botch */
                    153:        int     nerrlab;
                    154:        Label   errlab[NERR];
                    155:        char    error[ERRLEN];
                    156:        char    elem[NAMELEN];          /* last name element from namec */
                    157:        Chan    *slash;
                    158:        Chan    *dot;
                    159:        /*
                    160:         * Rest of structure controlled by devproc.c and friends.
                    161:         * lock(&p->debug) to modify.
                    162:         */
                    163:        Note    note[NNOTE];
                    164:        short   nnote;
                    165:        short   notified;               /* sysnoted is due */
                    166:        Note    lastnote;
                    167:        int     (*notify)(void*, char*);
                    168:        void    *ureg;
                    169:        void    *dbgreg;
                    170: };
                    171: 
                    172: struct
                    173: {
                    174:        Lock;
                    175:        short   machs;
                    176:        short   exiting;
                    177: }active;
                    178: 
                    179: extern Mach    *m;
                    180: extern User    *u;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.