The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/bitsy/dat.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 typedef struct Cisdat           Cisdat;
    2 typedef struct Conf             Conf;
    3 typedef struct Confmem  Confmem;
    4 typedef struct FPU              FPU;
    5 typedef struct FPenv            FPenv;
    6 typedef struct FPsave           FPsave;
    7 typedef struct DevConf          DevConf;
    8 typedef struct Label            Label;
    9 typedef struct Lock             Lock;
   10 typedef struct MMU              MMU;
   11 typedef struct Mach             Mach;
   12 typedef struct Notsave          Notsave;
   13 typedef struct Page             Page;
   14 typedef struct PCMmap           PCMmap;
   15 typedef struct PCMslot          PCMslot;
   16 typedef struct PCMconftab       PCMconftab;
   17 typedef struct PhysUart         PhysUart;
   18 typedef struct PMMU             PMMU;
   19 typedef struct Proc             Proc;
   20 typedef struct Uart             Uart;
   21 typedef struct Ureg             Ureg;
   22 typedef struct Vctl             Vctl;
   23 typedef long            Tval;
   24 
   25 #pragma incomplete Ureg
   26 
   27 typedef void IntrHandler(Ureg*, void*);
   28 
   29 #define MAXSYSARG       5       /* for mount(fd, mpt, flag, arg, srv) */
   30 
   31 /*
   32  *  parameters for sysproc.c
   33  */
   34 #define AOUT_MAGIC      (E_MAGIC)
   35 
   36 struct Lock
   37 {
   38         ulong   key;
   39         ulong   sr;
   40         ulong   pc;
   41         Proc    *p;
   42         Mach    *m;
   43         ushort  isilock;
   44 };
   45 
   46 struct Label
   47 {
   48         ulong   sp;
   49         ulong   pc;
   50 };
   51 
   52 /*
   53  * FPsave.status
   54  */
   55 enum
   56 {
   57         FPinit,
   58         FPactive,
   59         FPinactive,
   60 };
   61 struct  FPsave
   62 {
   63         ulong   status;
   64         ulong   control;
   65         ulong   regs[8][3];     /* emulated fp */       
   66 };
   67 
   68 struct Confmem
   69 {
   70         ulong   base;
   71         ulong   npage;
   72         ulong   limit;
   73         ulong   kbase;
   74         ulong   klimit;
   75 };
   76 
   77 struct Conf
   78 {
   79         ulong   nmach;          /* processors */
   80         ulong   nproc;          /* processes */
   81         Confmem mem[2];
   82         ulong   npage;          /* total physical pages of memory */
   83         ulong   upages;         /* user page pool */
   84         ulong   nimage;         /* number of page cache image headers */
   85         ulong   nswap;          /* number of swap pages */
   86         int     nswppo;         /* max # of pageouts per segment pass */
   87         ulong   copymode;       /* 0 is copy on write, 1 is copy on reference */
   88         int     monitor;
   89         ulong   ialloc;         /* bytes available for interrupt time allocation */
   90         ulong   pipeqsize;      /* size in bytes of pipe queues */
   91         ulong   hz;             /* processor cycle freq */
   92         ulong   mhz;
   93 };
   94 
   95 /*
   96  *  MMU stuff in proc
   97  */
   98 enum
   99 {
  100         NCOLOR= 1,      /* 1 level cache, don't worry about VCE's */
  101         Nmeg=   32,     /* maximum size of user space */
  102 };
  103 
  104 struct PMMU
  105 {
  106         Page    *l1page[Nmeg];  /* this's process' level 1 entries */
  107         ulong   l1table[Nmeg];  /* ... */
  108         Page    *mmufree;       /* free mmu pages */
  109 };
  110 
  111 /*
  112  *  things saved in the Proc structure during a notify
  113  */
  114 struct Notsave
  115 {
  116         int dummy;
  117 };
  118 
  119 #include "../port/portdat.h"
  120 
  121 struct Mach
  122 {
  123         int     machno;                 /* physical id of processor */
  124         ulong   splpc;                  /* pc of last caller to splhi */
  125 
  126         Proc    *proc;                  /* current process */
  127         ulong   mmupid;                 /* process id currently in mmu & cache */
  128 
  129         ulong   ticks;                  /* of the clock since boot time */
  130         Label   sched;                  /* scheduler wakeup */
  131         Lock    alarmlock;              /* access to alarm list */
  132         void*   alarm;                  /* alarms bound to this clock */
  133         int     inclockintr;
  134 
  135         Proc*   readied;                /* for runproc */
  136         ulong   schedticks;     /* next forced context switch */
  137 
  138         /* stats */
  139         int     tlbfault;
  140         int     tlbpurge;
  141         int     pfault;
  142         int     cs;
  143         int     syscall;
  144         int     load;
  145         int     intr;
  146         vlong   fastclock;              /* last sampled value */
  147         uvlong  inidle;                 /* time spent in idlehands() */
  148         ulong   spuriousintr;
  149         int     lastintr;
  150         int     ilockdepth;
  151         Perf    perf;                   /* performance counters */
  152 
  153         int     flushmmu;               /* make current proc flush it's mmu state */
  154         Proc    *pid2proc[31];          /* what proc holds what pid */
  155         int     lastpid;                /* highest assigned pid slot */
  156 
  157         int     cpumhz;                 /* speed of cpu */
  158         vlong   cpuhz;                  /* ... */
  159         uvlong  cyclefreq;              /* Frequency of user readable cycle counter */
  160 
  161         /* save areas for exceptions */
  162         ulong   sfiq[5];
  163         ulong   sirq[5];
  164         ulong   sund[5];
  165         ulong   sabt[5];
  166 
  167         int     stack[1];
  168 };
  169 
  170 /*
  171  * Fake kmap since we direct map dram
  172  */
  173 typedef void            KMap;
  174 #define VA(k)           ((ulong)(k))
  175 #define kmap(p)         (KMap*)((p)->pa)
  176 #define kunmap(k)
  177 
  178 struct
  179 {
  180         Lock;
  181         int     machs;                  /* bitmap of active CPUs */
  182         int     exiting;                /* shutdown */
  183         int     ispanic;                /* shutdown in response to a panic */
  184 }active;
  185 
  186 #define MACHP(n)        ((Mach *)(MACHADDR+(n)*BY2PG))
  187 
  188 extern Mach     *m;
  189 extern Proc     *up;
  190 
  191 enum
  192 {
  193         OneMeg= 1024*1024,
  194 };
  195 
  196 /*
  197  * PCMCIA structures known by both port/cis.c and the pcmcia driver
  198  */
  199 
  200 /*
  201  * Map between ISA memory space and PCMCIA card memory space.
  202  */
  203 struct PCMmap {
  204         ulong   ca;                     /* card address */
  205         ulong   cea;                    /* card end address */
  206         ulong   isa;                    /* local virtual address */
  207         int     len;                    /* length of the ISA area */
  208         int     attr;                   /* attribute memory */
  209 };
  210 
  211 /*
  212  *  a PCMCIA configuration entry
  213  */
  214 struct PCMconftab
  215 {
  216         int     index;
  217         ushort  irqs;           /* legal irqs */
  218         uchar   irqtype;
  219         uchar   bit16;          /* true for 16 bit access */
  220         struct {
  221                 ulong   start;
  222                 ulong   len;
  223         } io[16];
  224         int     nio;
  225         uchar   vpp1;
  226         uchar   vpp2;
  227         uchar   memwait;
  228         ulong   maxwait;
  229         ulong   readywait;
  230         ulong   otherwait;
  231 };
  232 
  233 /*
  234  *  PCMCIA card slot
  235  */
  236 struct PCMslot
  237 {
  238         RWlock;
  239 
  240         Ref     ref;
  241 
  242         long    memlen;         /* memory length */
  243         uchar   slotno;         /* slot number */
  244         void    *regs;          /* i/o registers */
  245         void    *mem;           /* memory */
  246         void    *attr;          /* attribute memory */
  247 
  248         /* status */
  249         uchar   occupied;       /* card in the slot */
  250         uchar   configed;       /* card configured */
  251         uchar   inserted;       /* card just inserted */
  252 
  253         Dev             *dev;   /* set in ctlwrite `configure' */
  254 
  255         /* cis info */
  256         int     cisread;        /* set when the cis has been read */
  257         char    verstr[512];    /* version string */
  258         int     ncfg;           /* number of configurations */
  259         struct {
  260                 ushort  cpresent;       /* config registers present */
  261                 ulong   caddr;          /* relative address of config registers */
  262         } cfg[8];
  263         int     nctab;          /* number of config table entries */
  264         PCMconftab      ctab[8];
  265         PCMconftab      *def;           /* default conftab */
  266 
  267         /* maps are fixed */
  268         PCMmap memmap;
  269         PCMmap attrmap;
  270 };
  271 
  272 /*
  273  *  hardware info about a device
  274  */
  275 typedef struct {
  276         ulong   port;   
  277         int     size;
  278 } Devport;
  279 
  280 struct DevConf
  281 {
  282         RWlock;                 /* write: configure/unconfigure/suspend; read: normal access */
  283         ulong   mem;            /* mapped memory address */
  284         Devport *ports;         /* ports[0]: mapped i/o regs, access size */
  285         int     nports;         /* always 1 for the bitsy */
  286         int     itype;          /* type of interrupt */
  287         ulong   intnum;         /* interrupt number */
  288         char    *type;          /* card type, mallocated */
  289 };
  290 

Cache object: 1553dc56876f07515c2e4e7cf85e2295


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.