1 /* 2 * Copyright (c) 1980 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 * 6 * @(#)config.h 5.2 (Berkeley) 09/17/85 7 */ 8 9 /* 10 * Config. 11 */ 12 #include <sys/types.h> 13 14 #define NODEV ((dev_t)-1) 15 16 struct file_list { 17 struct file_list *f_next; 18 char *f_fn; /* the name */ 19 u_char f_type; /* see below */ 20 u_char f_flags; /* see below */ 21 short f_special; /* requires special make rule */ 22 char *f_needs; 23 /* 24 * Random values: 25 * swap space parameters for swap areas 26 * root device, etc. for system specifications 27 */ 28 union { 29 struct { /* when swap specification */ 30 dev_t fuw_swapdev; 31 int fuw_swapsize; 32 } fuw; 33 struct { /* when system specification */ 34 dev_t fus_rootdev; 35 dev_t fus_argdev; 36 dev_t fus_dumpdev; 37 } fus; 38 } fun; 39 #define f_swapdev fun.fuw.fuw_swapdev 40 #define f_swapsize fun.fuw.fuw_swapsize 41 #define f_rootdev fun.fus.fus_rootdev 42 #define f_argdev fun.fus.fus_argdev 43 #define f_dumpdev fun.fus.fus_dumpdev 44 }; 45 46 /* 47 * Types. 48 */ 49 #define DRIVER 1 50 #define NORMAL 2 51 #define INVISIBLE 3 52 #define PROFILING 4 53 #define SYSTEMSPEC 5 54 #define SWAPSPEC 6 55 56 /* 57 * Attributes (flags). 58 */ 59 #define CONFIGDEP 1 60 61 struct idlst { 62 char *id; 63 struct idlst *id_next; 64 }; 65 66 struct device { 67 int d_type; /* CONTROLLER, DEVICE, UBA or MBA */ 68 struct device *d_conn; /* what it is connected to */ 69 char *d_name; /* name of device (e.g. rk11) */ 70 struct idlst *d_vec; /* interrupt vectors */ 71 int d_pri; /* interrupt priority */ 72 int d_addr; /* address of csr */ 73 int d_unit; /* unit number */ 74 int d_drive; /* drive number */ 75 int d_slave; /* slave number */ 76 #define QUES -1 /* -1 means '?' */ 77 #define UNKNOWN -2 /* -2 means not set yet */ 78 int d_dk; /* if init 1 set to number for iostat */ 79 int d_flags; /* nlags for device init */ 80 struct device *d_next; /* Next one in list */ 81 }; 82 #define TO_NEXUS (struct device *)-1 83 84 struct config { 85 char *c_dev; 86 char *s_sysname; 87 }; 88 89 /* 90 * Config has a global notion of which machine type is 91 * being used. It uses the name of the machine in choosing 92 * files and directories. Thus if the name of the machine is ``vax'', 93 * it will build from ``Makefile.vax'' and use ``../vax/inline'' 94 * in the makerules, etc. 95 */ 96 int machine; 97 char *machinename; 98 #define MACHINE_VAX 1 99 #define MACHINE_SUN 2 100 101 /* 102 * For each machine, a set of CPU's may be specified as supported. 103 * These and the options (below) are put in the C flags in the makefile. 104 */ 105 struct cputype { 106 char *cpu_name; 107 struct cputype *cpu_next; 108 } *cputype; 109 110 /* 111 * A set of options may also be specified which are like CPU types, 112 * but which may also specify values for the options. 113 */ 114 struct opt { 115 char *op_name; 116 char *op_value; 117 struct opt *op_next; 118 } *opt; 119 120 char *ident; 121 char *ns(); 122 char *tc(); 123 char *qu(); 124 char *get_word(); 125 char *path(); 126 char *raise(); 127 128 int do_trace; 129 130 char *index(); 131 char *rindex(); 132 char *malloc(); 133 char *strcpy(); 134 char *strcat(); 135 char *sprintf(); 136 137 #if MACHINE_VAX 138 int seen_mba, seen_uba; 139 #endif 140 141 struct device *connect(); 142 struct device *dtab; 143 dev_t nametodev(); 144 char *devtoname(); 145 146 char errbuf[80]; 147 int yyline; 148 149 struct file_list *ftab, *conf_list, **confp; 150 char *PREFIX; 151 152 int timezone, hadtz; 153 int dst; 154 int profiling; 155 156 int maxusers; 157 158 #define eq(a,b) (!strcmp(a,b)) 159