Annotation of lucent/sys/src/9/gnot/dat.h, revision 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.