Annotation of lucent/sys/src/9/next/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 Label   Label;
                      5: typedef struct Lock    Lock;
                      6: typedef struct Mach    Mach;
                      7: typedef struct Page    Page;
                      8: typedef struct PMMU    PMMU;
                      9: typedef struct Portpage        Portpage;
                     10: typedef struct Ureg    Ureg;
                     11: typedef struct User    User;
                     12: 
                     13: #define        MACHP(n)        (n==0? &mach0 : *(Mach**)0)
                     14: 
                     15: extern Mach    mach0;
                     16: extern  void   (*kprofp)(ulong);
                     17: 
                     18: /*
                     19:  *  parameters for sysproc.c
                     20:  */
                     21: #define AOUT_MAGIC     A_MAGIC
                     22: 
                     23: struct Lock
                     24: {
                     25:        char    key;
                     26:        ulong   pc;
                     27:        ulong   sr;
                     28: };
                     29: 
                     30: struct Label
                     31: {
                     32:        ulong   sp;
                     33:        ulong   pc;
                     34:        ushort  sr;
                     35: };
                     36: 
                     37: /*
                     38:  * floating point registers
                     39:  */
                     40: enum
                     41: {
                     42:        FPinit,
                     43:        FPactive,
                     44:        FPdirty,
                     45: };
                     46: 
                     47: struct FPsave
                     48: {
                     49:        uchar   type;
                     50:        uchar   size;
                     51:        short   reserved;
                     52:        char    junk[212];      /* 68881: sizes 24, 180; 68882: 56, 212 */
                     53:        /* this offset known in db */
                     54:        union{
                     55:        char    reg[3*4+8*12];
                     56:        struct{
                     57:                ulong   fpcr;
                     58:                ulong   fpsr;
                     59:                ulong   fpiar;
                     60:                struct{
                     61:                        ulong   d[3];
                     62:                }dreg[8];
                     63:        };
                     64:        };
                     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     copymode;       /* 0 is copy on write, 1 is copy on reference */
                     81:        int     portispaged;    /* ??? */
                     82:        int     nfloppy;
                     83: };
                     84: 
                     85: /*
                     86:  *  MMU stuff in proc
                     87:  */
                     88: struct PMMU
                     89: {
                     90:        Page    *mmufree;       /* unused page table pages */
                     91:        Page    *mmuused;       /* used page table pages */
                     92:        ulong   mmuptr;         /* first free entry in cur */
                     93:        ulong   mmuA[2];        /* first 2 entries of A table */
                     94: };
                     95: 
                     96: #include "../port/portdat.h"
                     97: 
                     98: /*
                     99:  *  machine dependent definitions not used by ../port/dat.h
                    100:  */
                    101: 
                    102: struct Mach
                    103: {
                    104:        /* OFFSETS OF THE FOLLOWING KNOWN BY l.s */
                    105:        int     machno;                 /* physical id of processor */
                    106:        ulong   splpc;                  /* pc of last caller to splhi */
                    107: 
                    108:        /* ordering from here on irrelevant */
                    109:        int     mmask;                  /* 1<<m->machno */
                    110:        ulong   ticks;                  /* of the clock since boot time */
                    111:        Proc    *proc;                  /* current process on this processor */
                    112:        Label   sched;                  /* scheduler wakeup */
                    113:        Lock    alarmlock;              /* access to alarm list */
                    114:        void    *alarm;                 /* alarms bound to this clock */
                    115:        int     fpstate;                /* state of fp registers on machine */
                    116: 
                    117:        int     tlbfault;
                    118:        int     tlbpurge;
                    119:        int     pfault;
                    120:        int     cs;
                    121:        int     syscall;
                    122:        int     load;
                    123:        int     intr;
                    124:        Proc    *lproc;
                    125: 
                    126:        /* MUST BE LAST */
                    127:        int     stack[1];
                    128: };
                    129: 
                    130: /*
                    131:  * Fake kmap
                    132:  */
                    133: typedef void           KMap;
                    134: #define        VA(k)           ((ulong)(k))
                    135: #define        kmap(p)         (KMap*)(p->pa|KZERO)
                    136: #define        kmapperm(p)     kmap(p)
                    137: #define        kunmap(k)
                    138: 
                    139: #define        NERR    20
                    140: #define        NNOTE   5
                    141: struct User
                    142: {
                    143:        Proc    *p;
                    144:        FPsave  fpsave;                 /* offset known by db */
                    145:        int     scallnr;                /* sys call number - known by db */
                    146:        Sargs   s;                      /* offset known by db */
                    147:        int     nerrlab;
                    148:        Label   errlab[NERR];
                    149:        char    error[ERRLEN];
                    150:        char    elem[NAMELEN];          /* last name element from namec */
                    151:        Chan    *slash;
                    152:        Chan    *dot;
                    153:        /*
                    154:         * Rest of structure controlled by devproc.c and friends.
                    155:         * lock(&p->debug) to modify.
                    156:         */
                    157:        Note    note[NNOTE];
                    158:        short   nnote;
                    159:        short   notified;               /* sysnoted is due */
                    160:        Note    lastnote;
                    161:        int     (*notify)(void*, char*);
                    162:        void    *ureg;
                    163:        void    *dbgreg;                /* User registers for debugging in proc */
                    164:        ushort  svvo;
                    165:        ushort  svsr;
                    166: };
                    167: 
                    168: enum
                    169: {
                    170:        Scsidevice,
                    171:        Scsidma,
                    172: };
                    173: 
                    174: struct
                    175: {
                    176:        Lock;
                    177:        short   machs;
                    178:        short   exiting;
                    179: }active;
                    180: 
                    181: 
                    182: extern Mach    *m;
                    183: 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.