Annotation of cci/sys/stand/vdfmt/vdfmt.c, revision 1.1

1.1     ! root        1: /*
        !             2: **
        !             3: */
        !             4: 
        !             5: #include       "vdfmt.h"
        !             6: 
        !             7: main()
        !             8: {
        !             9:        exdent(-1);
        !            10:        print("VDFORMAT                   Version 3.0 \n\n");
        !            11:        print("Type `Help' for help, `Start' to execute operations.\n\n");
        !            12: 
        !            13:        for(;;) {
        !            14:                determine_controller_types();
        !            15:                if(!_setjmp(reset_environ)) {
        !            16:                        init_environment();
        !            17:                        for(;;) {
        !            18:                                if(!_setjmp(quit_environ)) {
        !            19:                                        reset_operation_tables();
        !            20:                                        process_commands();
        !            21:                                }
        !            22:                                else
        !            23:                                        report_unexecuted_ops();
        !            24:                        }
        !            25:                }
        !            26:        }
        !            27: }
        !            28: 
        !            29: 
        !            30: /*
        !            31: **
        !            32: */
        !            33: 
        !            34: report_unexecuted_ops()
        !            35: {
        !            36:        register int    ctlr, drive;
        !            37:        char *header = "The following operations will not be executed:\n";
        !            38: 
        !            39:        indent();
        !            40:        for(ctlr=0; ctlr<MAXCTLR; ctlr++)
        !            41:                for(drive=0; drive<MAXDRIVE; drive++)
        !            42:                        if(ops_to_do[ctlr][drive].op) {
        !            43:                                print(header);
        !            44:                                if(strlen(header)) {
        !            45:                                        indent();
        !            46:                                        header = "";
        !            47:                                        print(header);
        !            48:                                }
        !            49:                                display_operations(ctlr, drive);
        !            50:                                ops_to_do[ctlr][drive].op = 0;
        !            51:                        }
        !            52:        exdent(-1);
        !            53: }
        !            54: 
        !            55: 
        !            56: /*
        !            57: **
        !            58: */
        !            59: 
        !            60: determine_controller_types()
        !            61: {
        !            62:        extern fmt_err  smd_decode_position(), smd_e_decode_position();
        !            63:        extern bs_entry smd_code_position(), smd_e_code_position();
        !            64:        extern int      smd_cyl_skew(), smd_trk_skew();
        !            65:        extern int      smd_e_cyl_skew(), smd_e_trk_skew();
        !            66:        register int    ctlr, drive;
        !            67: 
        !            68:        /* Identify which controllers are present and what type they are. */
        !            69:        num_controllers = 0;
        !            70:        for(ctlr = 0; ctlr < MAXCTLR; ctlr++) {
        !            71:                c_info[ctlr].addr = (cdr *)(vddcaddr[ctlr]+IOBASE);
        !            72:                if(!badaddr(c_info[ctlr].addr, 2)) {
        !            73:                        num_controllers++;
        !            74:                        c_info[ctlr].addr->cdr_reset = (unsigned)0xffffffff;
        !            75:                        DELAY(1000000);
        !            76:                        if(c_info[ctlr].addr->cdr_reset!=(unsigned)0xffffffff) {
        !            77:                                c_info[ctlr].alive = u_true;
        !            78:                                c_info[ctlr].type = SMDCTLR;
        !            79:                                c_info[ctlr].name = "VDDC";
        !            80:                                c_info[ctlr].decode_pos = smd_decode_position;
        !            81:                                c_info[ctlr].code_pos = smd_code_position;
        !            82:                                c_info[ctlr].cylinder_skew = smd_cyl_skew;
        !            83:                                c_info[ctlr].track_skew = smd_trk_skew;
        !            84:                                DELAY(1000000);
        !            85:                        }
        !            86:                        else {
        !            87:                                c_info[ctlr].alive = u_true;
        !            88:                                c_info[ctlr].type = SMD_ECTLR;
        !            89:                                c_info[ctlr].name = "SMD-E";
        !            90:                                c_info[ctlr].addr->cdr_reserved = 0x0;
        !            91:                                c_info[ctlr].decode_pos = smd_e_decode_position;
        !            92:                                c_info[ctlr].code_pos = smd_e_code_position;
        !            93:                                c_info[ctlr].cylinder_skew = smd_e_cyl_skew;
        !            94:                                c_info[ctlr].track_skew = smd_e_trk_skew;
        !            95:                                DELAY(3000000);
        !            96:                        }
        !            97:                }
        !            98:                else  {
        !            99:                        c_info[ctlr].alive = u_false;
        !           100:                        c_info[ctlr].type = UNKNOWN;
        !           101:                }
        !           102:                for(drive=0; drive<MAXDRIVE; drive++) {
        !           103:                        d_info[ctlr][drive].alive = u_unknown;
        !           104:                        d_info[ctlr][drive].info = (fs_tab *)0;
        !           105:                }
        !           106:        }
        !           107:        if(num_controllers == 0)
        !           108:                _stop("vdfmt: I can't find any disk controllers.  Giving up!");
        !           109: }
        !           110: 
        !           111: 
        !           112: /*
        !           113: **     Init_environment is used to reset everything to it's initial state.
        !           114: ** All previously stored drive information is lost when this command
        !           115: ** is executed.
        !           116: */
        !           117: 
        !           118: init_environment()
        !           119: {
        !           120:        register int    ctlr, drive;
        !           121: 
        !           122:        /* clear list of operations to do */
        !           123:        for(ctlr=0; ctlr<MAXCTLR; ctlr++) {
        !           124:                for(drive=0; drive<MAXCTLR; drive++) {
        !           125:                        d_info[ctlr][drive].alive = u_unknown;
        !           126:                        d_info[ctlr][drive].info = (fs_tab *)0;
        !           127:                        d_info[ctlr][drive].id = -1;
        !           128:                        d_info[ctlr][drive].trk_size = 0;
        !           129:                        d_info[ctlr][drive].num_slip = 0;
        !           130:                        d_info[ctlr][drive].track_skew = 0;
        !           131:                }
        !           132:        }
        !           133:        /* Init pattern table pointers */
        !           134:        pattern_address[0] = pattern_0;
        !           135:        pattern_address[1] = pattern_1;
        !           136:        pattern_address[2] = pattern_2;
        !           137:        pattern_address[3] = pattern_3;
        !           138:        pattern_address[4] = pattern_4;
        !           139:        pattern_address[5] = pattern_5;
        !           140:        pattern_address[6] = pattern_6;
        !           141:        pattern_address[7] = pattern_7;
        !           142:        pattern_address[8] = pattern_8;
        !           143:        pattern_address[9] = pattern_9;
        !           144:        pattern_address[10] = pattern_10;
        !           145:        pattern_address[11] = pattern_11;
        !           146:        pattern_address[12] = pattern_12;
        !           147:        pattern_address[13] = pattern_13;
        !           148:        pattern_address[14] = pattern_14;
        !           149:        pattern_address[15] = pattern_15;
        !           150:        /* Init operations command table */
        !           151:        operations[0].routine = format;
        !           152:        operations[0].op_name = "Format";
        !           153:        operations[0].op_action = "Formatting";
        !           154:        operations[1].routine = verify;
        !           155:        operations[1].op_name = "Verify";
        !           156:        operations[1].op_action = "Verification";
        !           157:        operations[2].routine = relocate;
        !           158:        operations[2].op_name = "Relocate";
        !           159:        operations[2].op_action = "Relocation";
        !           160:        operations[3].routine = info;
        !           161:        operations[3].op_name = "Info";
        !           162:        operations[3].op_action = "Information gathering";
        !           163:        operations[4].routine = correct;
        !           164:        operations[4].op_name = "Correct";
        !           165:        operations[4].op_action = "Correction";
        !           166:        operations[5].routine = profile;
        !           167:        operations[5].op_name = "Profile";
        !           168:        operations[5].op_action = "Profiling";
        !           169:        operations[6].routine = exercise;
        !           170:        operations[6].op_name = "Exercise";
        !           171:        operations[6].op_action = "exercising";
        !           172:        bad_map = (bs_map *)bs_map_space;
        !           173: }
        !           174: 
        !           175: 
        !           176: /*
        !           177: **     Reset_operation_tables reinitializes all the  tables that
        !           178: **  control the sequence of formatter operations.
        !           179: */
        !           180: 
        !           181: reset_operation_tables()
        !           182: {
        !           183:        register int    ctlr, drive;
        !           184: 
        !           185:        /* clear list of operations to do */
        !           186:        for(ctlr=0; ctlr<MAXCTLR; ctlr++) {
        !           187:                for(drive=0; drive<MAXDRIVE; drive++) {
        !           188:                        ops_to_do[ctlr][drive].op = 0;
        !           189:                        ops_to_do[ctlr][drive].numpat = 1;
        !           190:                }
        !           191:        }
        !           192:        kill_processes = false;
        !           193: }
        !           194: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.