Annotation of lucent/sys/src/9/next/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 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.