| 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.3 (Berkeley) %G% |
| 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 | * A separate set of options may be defined for make-style options. |
| 114 | */ |
| 115 | struct opt { |
| 116 | char *op_name; |
| 117 | char *op_value; |
| 118 | struct opt *op_next; |
| 119 | } *opt, *mkopt; |
| 120 | |
| 121 | char *ident; |
| 122 | char *ns(); |
| 123 | char *tc(); |
| 124 | char *qu(); |
| 125 | char *get_word(); |
| 126 | char *path(); |
| 127 | char *raise(); |
| 128 | |
| 129 | int do_trace; |
| 130 | |
| 131 | char *index(); |
| 132 | char *rindex(); |
| 133 | char *malloc(); |
| 134 | char *strcpy(); |
| 135 | char *strcat(); |
| 136 | char *sprintf(); |
| 137 | |
| 138 | #if MACHINE_VAX |
| 139 | int seen_mba, seen_uba; |
| 140 | #endif |
| 141 | |
| 142 | struct device *connect(); |
| 143 | struct device *dtab; |
| 144 | dev_t nametodev(); |
| 145 | char *devtoname(); |
| 146 | |
| 147 | char errbuf[80]; |
| 148 | int yyline; |
| 149 | |
| 150 | struct file_list *ftab, *conf_list, **confp; |
| 151 | char *PREFIX; |
| 152 | |
| 153 | int timezone, hadtz; |
| 154 | int dst; |
| 155 | int profiling; |
| 156 | |
| 157 | int maxusers; |
| 158 | |
| 159 | #define eq(a,b) (!strcmp(a,b)) |