1 #ifndef lint 2 static char sccsid[] = "@(#)exercise.c 1.3 (Berkeley/CCI) 11/23/87"; 3 #endif 4 5 #include "vdfmt.h" 6 7 #define verbose 1 8 9 /* 10 ** 11 */ 12 13 exercise() 14 { 15 int cyl, trk; 16 dskadr ead, sad; 17 18 print("Starting disk exercise on "); 19 printf("controller %d, drive %d, ", cur.controller, cur.drive); 20 printf("type %s.\n", lab->d_typename); 21 22 if(read_bad_sector_map() == true) { 23 if(bad_map->bs_id != D_INFO->id) { 24 print("Module serial numbers do not match!\n"); 25 print("Use `info' to find the real serial number.\n"); 26 _longjmp(abort_environ, 1); 27 } 28 } 29 else if(is_formatted() == false) { 30 print("Can not exercise unformatted drives!\n"); 31 _longjmp(abort_environ, 1); 32 } 33 print("Starting read test.\n"); 34 cur.state = exec; 35 sad.track = sad.sector = 0; 36 indent(); 37 for(sad.cylinder=0; sad.cylinder<lab->d_ncylinders; sad.cylinder++) { 38 print("pass %d...\n", sad.cylinder); 39 for(cyl=0; cyl<lab->d_ncylinders-NUMSYS; cyl++){ 40 ead.cylinder = cyl; 41 for(trk=0; trk<lab->d_ntracks; trk++) { 42 ead.track = trk; 43 ead.sector = 0; 44 access_dsk((char *)scratch, &sad, 45 VDOP_SEEK, 1, 1); 46 verify_track(&ead, 16, verbose); 47 if(kill_processes == true) 48 goto exit; 49 } 50 } 51 } 52 exdent(2); 53 exit: sync_bad_sector_map(); 54 printf("Exercise completed successfully.\n"); 55 } 56 57