lint
[unix-history] / usr / src / sys / ufs / ffs / ffs_tables.c
CommitLineData
5576d804
KM
1/* Copyright (c) 1981 Regents of the University of California */
2
b6407c9d 3/* @(#)ffs_tables.c 1.3 %G% */
5576d804
KM
4
5#include "../h/param.h"
6
7/* partab.c 4.2 81/03/08 */
8
9/*
10 * Table giving parity for characters and indicating
11 * character classes to tty driver. In particular,
12 * if the low 6 bits are 0, then the character needs
13 * no special processing on output.
14 */
15
1b940b13 16unsigned char partab[] = {
5576d804
KM
17 0001,0201,0201,0001,0201,0001,0001,0201,
18 0202,0004,0003,0201,0005,0206,0201,0001,
19 0201,0001,0001,0201,0001,0201,0201,0001,
20 0001,0201,0201,0001,0201,0001,0001,0201,
21 0200,0000,0000,0200,0000,0200,0200,0000,
22 0000,0200,0200,0000,0200,0000,0000,0200,
23 0000,0200,0200,0000,0200,0000,0000,0200,
24 0200,0000,0000,0200,0000,0200,0200,0000,
25 0200,0000,0000,0200,0000,0200,0200,0000,
26 0000,0200,0200,0000,0200,0000,0000,0200,
27 0000,0200,0200,0000,0200,0000,0000,0200,
28 0200,0000,0000,0200,0000,0200,0200,0000,
29 0000,0200,0200,0000,0200,0000,0000,0200,
30 0200,0000,0000,0200,0000,0200,0200,0000,
31 0200,0000,0000,0200,0000,0200,0200,0000,
32 0000,0200,0200,0000,0200,0000,0000,0201,
33
34 /*
35 * 7 bit ascii ends with the last character above,
36 * but we contine through all 256 codes for the sake
37 * of the tty output routines which use special vax
38 * instructions which need a 256 character trt table.
39 */
40
41 0007,0007,0007,0007,0007,0007,0007,0007,
42 0007,0007,0007,0007,0007,0007,0007,0007,
43 0007,0007,0007,0007,0007,0007,0007,0007,
44 0007,0007,0007,0007,0007,0007,0007,0007,
45 0007,0007,0007,0007,0007,0007,0007,0007,
46 0007,0007,0007,0007,0007,0007,0007,0007,
47 0007,0007,0007,0007,0007,0007,0007,0007,
48 0007,0007,0007,0007,0007,0007,0007,0007,
49 0007,0007,0007,0007,0007,0007,0007,0007,
50 0007,0007,0007,0007,0007,0007,0007,0007,
51 0007,0007,0007,0007,0007,0007,0007,0007,
52 0007,0007,0007,0007,0007,0007,0007,0007,
53 0007,0007,0007,0007,0007,0007,0007,0007,
54 0007,0007,0007,0007,0007,0007,0007,0007,
55 0007,0007,0007,0007,0007,0007,0007,0007,
56 0007,0007,0007,0007,0007,0007,0007,0007
57};
58
59/*
60 * bit patterns for identifying fragments in the block map
61 * used as ((map & around) == inside)
62 */
63int around[9] = {
64 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff, 0x1ff, 0x3ff
65};
66int inside[9] = {
67 0x0, 0x2, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe
68};
69
70/*
b6407c9d 71 * given a block map bit pattern, the frag tables tell whether a
5576d804 72 * particular size fragment is available.
b6407c9d 73 *
5576d804 74 * used as:
b6407c9d 75 * if ((1 << (size - 1)) & fragtbl[fs->fs_frag][map] {
5576d804
KM
76 * at least one fragment of the indicated size is available
77 * }
b6407c9d
KM
78 *
79 * These tables are used by the scanc instruction on the VAX to
5576d804
KM
80 * quickly find an appropriate fragment.
81 */
b6407c9d
KM
82
83unsigned char fragtbl1[256] = {
84 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
85 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
86 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
87 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
88 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
89 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
90 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
91 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
92 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
93 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
94 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
95 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
96 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
97 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
98 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
99 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
100 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
101 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
102 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
103 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
104 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
105 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
106 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
107 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
108 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
109 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
110 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
111 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
112 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
113 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
114 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
115 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
116};
117
118unsigned char fragtbl2[256] = {
119 0x0, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x3,
120 0x1, 0x1, 0x1, 0x3, 0x2, 0x3, 0x3, 0x2,
121 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
122 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
123 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
124 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
125 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3,
126 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2,
127 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
128 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
129 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
130 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
131 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
132 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
133 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
134 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
135 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
136 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
137 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
138 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
139 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3,
140 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3,
141 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
142 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
143 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3,
144 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2,
145 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
146 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
147 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
148 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
149 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3,
150 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2,
151};
152
153unsigned char fragtbl4[256] = {
5576d804
KM
154 0x0, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4,
155 0x1, 0x1, 0x1, 0x3, 0x2, 0x3, 0x4, 0x8,
156 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
157 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
158 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
159 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
160 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
161 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
162 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
163 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
164 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
165 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
166 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
167 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
168 0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4,
169 0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc,
170 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
171 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
172 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
173 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
174 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
175 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
176 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7,
177 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb,
178 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
179 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
180 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7,
181 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb,
182 0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4,
183 0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc,
184 0x8, 0x9, 0x9, 0xa, 0x9, 0x9, 0xa, 0xc,
185 0x9, 0x9, 0x9, 0xb, 0xa, 0xb, 0xc, 0x8,
186};
5576d804 187
b6407c9d 188unsigned char fragtbl8[256] = {
5576d804
KM
189 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04,
190 0x01, 0x01, 0x01, 0x03, 0x02, 0x03, 0x04, 0x08,
191 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
192 0x02, 0x03, 0x03, 0x02, 0x04, 0x05, 0x08, 0x10,
193 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
194 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
195 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
196 0x04, 0x05, 0x05, 0x06, 0x08, 0x09, 0x10, 0x20,
197 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
198 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
199 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
200 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
201 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
202 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
203 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
204 0x08, 0x09, 0x09, 0x0a, 0x10, 0x11, 0x20, 0x40,
205 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
206 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
207 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
208 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
209 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
210 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
211 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
212 0x05, 0x05, 0x05, 0x07, 0x09, 0x09, 0x11, 0x21,
213 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
214 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
215 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
216 0x02, 0x03, 0x03, 0x02, 0x06, 0x07, 0x0a, 0x12,
217 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
218 0x05, 0x05, 0x05, 0x07, 0x06, 0x07, 0x04, 0x0c,
219 0x08, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0c,
220 0x10, 0x11, 0x11, 0x12, 0x20, 0x21, 0x40, 0x80,
221};
b6407c9d
KM
222
223/*
224 * the actual fragtbl array
225 */
226unsigned char *fragtbl[MAXFRAG + 1] = {
227 0, fragtbl1, fragtbl2, 0, fragtbl4, 0, 0, 0, fragtbl8,
228};