add new useful constants
[unix-history] / usr / src / sys / ufs / ffs / ffs_tables.c
CommitLineData
1b731e7b 1/* ffs_tables.c 2.3 82/07/15 */
5576d804
KM
2
3#include "../h/param.h"
4
5576d804
KM
5/*
6 * bit patterns for identifying fragments in the block map
7 * used as ((map & around) == inside)
8 */
9int around[9] = {
10 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff, 0x1ff, 0x3ff
11};
12int inside[9] = {
13 0x0, 0x2, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe
14};
15
16/*
b6407c9d 17 * given a block map bit pattern, the frag tables tell whether a
5576d804 18 * particular size fragment is available.
b6407c9d 19 *
5576d804 20 * used as:
b6407c9d 21 * if ((1 << (size - 1)) & fragtbl[fs->fs_frag][map] {
5576d804
KM
22 * at least one fragment of the indicated size is available
23 * }
b6407c9d
KM
24 *
25 * These tables are used by the scanc instruction on the VAX to
5576d804
KM
26 * quickly find an appropriate fragment.
27 */
b6407c9d 28
156b8f82
KM
29unsigned char fragtbl124[256] = {
30 0x00, 0x16, 0x16, 0x2a, 0x16, 0x16, 0x26, 0x4e,
31 0x16, 0x16, 0x16, 0x3e, 0x2a, 0x3e, 0x4e, 0x8a,
32 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e,
33 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e,
34 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e,
35 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e,
36 0x2a, 0x3e, 0x3e, 0x2a, 0x3e, 0x3e, 0x2e, 0x6e,
37 0x3e, 0x3e, 0x3e, 0x3e, 0x2a, 0x3e, 0x6e, 0xaa,
38 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e,
39 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e,
40 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e,
41 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e,
42 0x26, 0x36, 0x36, 0x2e, 0x36, 0x36, 0x26, 0x6e,
43 0x36, 0x36, 0x36, 0x3e, 0x2e, 0x3e, 0x6e, 0xae,
44 0x4e, 0x5e, 0x5e, 0x6e, 0x5e, 0x5e, 0x6e, 0x4e,
45 0x5e, 0x5e, 0x5e, 0x7e, 0x6e, 0x7e, 0x4e, 0xce,
46 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e,
47 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e,
48 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e,
49 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e,
50 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e,
51 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e,
52 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7e,
53 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7e, 0xbe,
54 0x2a, 0x3e, 0x3e, 0x2a, 0x3e, 0x3e, 0x2e, 0x6e,
55 0x3e, 0x3e, 0x3e, 0x3e, 0x2a, 0x3e, 0x6e, 0xaa,
56 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7e,
57 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7e, 0xbe,
58 0x4e, 0x5e, 0x5e, 0x6e, 0x5e, 0x5e, 0x6e, 0x4e,
59 0x5e, 0x5e, 0x5e, 0x7e, 0x6e, 0x7e, 0x4e, 0xce,
60 0x8a, 0x9e, 0x9e, 0xaa, 0x9e, 0x9e, 0xae, 0xce,
61 0x9e, 0x9e, 0x9e, 0xbe, 0xaa, 0xbe, 0xce, 0x8a,
5576d804 62};
5576d804 63
b6407c9d 64unsigned char fragtbl8[256] = {
5576d804
KM
65 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04,
66 0x01, 0x01, 0x01, 0x03, 0x02, 0x03, 0x04, 0x08,
67 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
68 0x02, 0x03, 0x03, 0x02, 0x04, 0x05, 0x08, 0x10,
69 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
70 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
71 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
72 0x04, 0x05, 0x05, 0x06, 0x08, 0x09, 0x10, 0x20,
73 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
74 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
75 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
76 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
77 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
78 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
79 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
80 0x08, 0x09, 0x09, 0x0a, 0x10, 0x11, 0x20, 0x40,
81 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
82 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
83 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
84 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
85 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
86 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
87 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
88 0x05, 0x05, 0x05, 0x07, 0x09, 0x09, 0x11, 0x21,
89 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
90 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
91 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
92 0x02, 0x03, 0x03, 0x02, 0x06, 0x07, 0x0a, 0x12,
93 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
94 0x05, 0x05, 0x05, 0x07, 0x06, 0x07, 0x04, 0x0c,
95 0x08, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0c,
96 0x10, 0x11, 0x11, 0x12, 0x20, 0x21, 0x40, 0x80,
97};
b6407c9d
KM
98
99/*
100 * the actual fragtbl array
101 */
102unsigned char *fragtbl[MAXFRAG + 1] = {
156b8f82 103 0, fragtbl124, fragtbl124, 0, fragtbl124, 0, 0, 0, fragtbl8,
b6407c9d 104};