|
|
1.1 root 1: /*
2: * first block of rct: random crap
3: * longwords are in VAX order
4: */
5:
6: struct rct {
7: long rc_volser[2]; /* volume serial number */
8: short rc_flags;
9: short rc_res0;
10: long rc_lbn; /* block being replaced */
11: long rc_rbn; /* replacement block */
12: long rc_badrbn; /* bad replacement block */
13: short rc_junk[256-12]; /* reserved */
14: };
15:
16: /*
17: * flags
18: */
19:
20: #define RPROT 02 /* volume should be write protected */
21: #define RFE 0200 /* force error in replacement block */
22: #define RBADRBN 020000 /* bad rbn being replaced */
23: #define RPH2 040000 /* in `phase 2' */
24: #define RPH1 0100000 /* in `phase 1' */
25:
26: /*
27: * replacement block descriptor
28: */
29:
30: struct rbd {
31: unsigned rb_lbn: 28;
32: unsigned rb_code: 4;
33: };
34:
35: /*
36: * codes
37: */
38:
39: #define RFREE 0
40: #define RALT 01 /* alternate */
41: #define RALLOC 02 /* allocated */
42: #define RBAD 04 /* unusable replacement block */
43: #define RNULL 010 /* null entry (no such RBN) */
44:
45: #define RBNPB 128 /* RBNs per block */
46: #define RBNSEC 512 /* bytes per RBN sector */
47:
48: /*
49: * blocks in the RCT
50: */
51:
52: #define RCTHDR 0 /* header stuff */
53: #define RCTDATA 1 /* saved data from block under replacement */
54: #define RCTTAB 2 /* beginning of the table */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.