|
|
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.