1: #ifndef _TYPE_H
   2: #define _TYPE_H
   3: 
   4: #ifndef _MINIX_SYS_CONFIG_H
   5: #include <minix/sys_config.h>
   6: #endif
   7: 
   8: #ifndef _TYPES_H
   9: #include <sys/types.h>
  10: #endif
  11: 
  12: /* Type definitions. */
  13: typedef unsigned int vir_clicks;        /*  virtual addr/length in clicks */
  14: typedef unsigned long phys_bytes;       /* physical addr/length in bytes */
  15: typedef unsigned int phys_clicks;       /* physical addr/length in clicks */
  16: 
  17: #if (_MINIX_CHIP == _CHIP_INTEL)
  18: typedef unsigned int vir_bytes; /* virtual addresses and lengths in bytes */
  19: #endif
  20: 
  21: #if (_MINIX_CHIP == _CHIP_M68000)
  22: typedef unsigned long vir_bytes;/* virtual addresses and lengths in bytes */
  23: #endif
  24: 
  25: #if (_MINIX_CHIP == _CHIP_SPARC)
  26: typedef unsigned long vir_bytes;/* virtual addresses and lengths in bytes */
  27: #endif
  28: 
  29: /* Memory map for local text, stack, data segments. */
  30: struct mem_map {
  31:   vir_clicks mem_vir;           /* virtual address */
  32:   phys_clicks mem_phys;         /* physical address */
  33:   vir_clicks mem_len;           /* length */
  34: };
  35: 
  36: /* Memory map for remote memory areas, e.g., for the RAM disk. */
  37: struct far_mem {
  38:   int in_use;                   /* entry in use, unless zero */
  39:   phys_clicks mem_phys;         /* physical address */
  40:   vir_clicks mem_len;           /* length */
  41: };
  42: 
  43: /* Structure for virtual copying by means of a vector with requests. */
  44: struct vir_addr {
  45:   int proc_nr;
  46:   int segment;
  47:   vir_bytes offset;
  48: };
  49: 
  50: /* Memory allocation by PM. */
  51: struct hole {
  52:   struct hole *h_next;          /* pointer to next entry on the list */
  53:   phys_clicks h_base;           /* where does the hole begin? */
  54:   phys_clicks h_len;            /* how big is the hole? */
  55: };
  56: 
  57: /* Memory info from PM. */
  58: struct pm_mem_info {
  59:         struct hole pmi_holes[_NR_HOLES];/* memory (un)allocations */
  60:         u32_t pmi_hi_watermark;          /* highest ever-used click + 1 */
  61: };
  62: 
  63: #define phys_cp_req vir_cp_req 
  64: struct vir_cp_req {
  65:   struct vir_addr src;
  66:   struct vir_addr dst;
  67:   phys_bytes count;
  68: };
  69: 
  70: typedef struct {
  71:   vir_bytes iov_addr;           /* address of an I/O buffer */
  72:   vir_bytes iov_size;           /* sizeof an I/O buffer */
  73: } iovec_t;
  74: 
  75: /* PM passes the address of a structure of this type to KERNEL when
  76:  * sys_sendsig() is invoked as part of the signal catching mechanism.
  77:  * The structure contain all the information that KERNEL needs to build
  78:  * the signal stack.
  79:  */
  80: struct sigmsg {
  81:   int sm_signo;                 /* signal number being caught */
  82:   unsigned long sm_mask;        /* mask to restore when handler returns */
  83:   vir_bytes sm_sighandler;      /* address of handler */
  84:   vir_bytes sm_sigreturn;       /* address of _sigreturn in C library */
  85:   vir_bytes sm_stkptr;          /* user stack pointer */
  86: };
  87: 
  88: /* This is used to obtain system information through SYS_GETINFO. */
  89: struct kinfo {
  90:   phys_bytes code_base;         /* base of kernel code */
  91:   phys_bytes code_size;         
  92:   phys_bytes data_base;         /* base of kernel data */
  93:   phys_bytes data_size;
  94:   vir_bytes proc_addr;          /* virtual address of process table */
  95:   phys_bytes kmem_base;         /* kernel memory layout (/dev/kmem) */
  96:   phys_bytes kmem_size;
  97:   phys_bytes bootdev_base;      /* boot device from boot image (/dev/boot) */
  98:   phys_bytes bootdev_size;
  99:   phys_bytes ramdev_base;       /* boot device from boot image (/dev/boot) */
 100:   phys_bytes ramdev_size;
 101:   phys_bytes params_base;       /* parameters passed by boot monitor */
 102:   phys_bytes params_size;
 103:   int nr_procs;                 /* number of user processes */
 104:   int nr_tasks;                 /* number of kernel tasks */
 105:   char release[6];              /* kernel release number */
 106:   char version[6];              /* kernel version number */
 107:   int relocking;                /* relocking check (for debugging) */
 108: };
 109: 
 110: struct machine {
 111:   int pc_at;
 112:   int ps_mca;
 113:   int processor;
 114:   int protected;
 115:   int vdu_ega;
 116:   int vdu_vga;
 117: };
 118: 
 119: #endif /* _TYPE_H */