1 #ifndef lint 2 static char sccsid[] = "@(#)status.c 1.3 (Berkeley/CCI) 06/07/88"; 3 #endif 4 5 #include "vdfmt.h" 6 7 /* 8 ** These routines are used to display the status of the formatter. 9 */ 10 11 status() 12 { 13 indent(); 14 switch (cur.state) { 15 case cmd : 16 print("Waiting for operator response.\n"); 17 break; 18 case fmt : 19 dump_state("Formatting"); 20 break; 21 case vfy : 22 dump_state("Verifying"); 23 break; 24 case rel : 25 dump_state("Relocating"); 26 break; 27 case cor : 28 dump_state("Correcting"); 29 break; 30 case inf : 31 dump_state("Collecting information"); 32 break; 33 case exec : 34 dump_state("Exercising disk"); 35 break; 36 case setup: 37 printf("Initializing for operation "); 38 printf("on controller %d, drive %d.\n", 39 cur.controller, cur.drive); 40 default: 41 print("Current state is unknown.\n"); 42 } 43 exdent(1); 44 } 45 46 47 /* 48 ** 49 */ 50 51 dump_state(string) 52 char *string; 53 { 54 extern int wait_for_char; 55 56 indent(); 57 print("%s on controller %d, drive %d.\n", 58 string, cur.controller, cur.drive); 59 if (wait_for_char) 60 print("Waiting for operator response.\n"); 61 else { 62 print("Currently accessing cylinder %d, head %d.\n", 63 cur.daddr.cylinder, cur.daddr.track); 64 print("Currently "); 65 switch (cur.substate) { 66 case sub_chk : 67 printf("determining drive state.\n"); 68 break; 69 case sub_fmt : 70 printf("formatting drive surface.\n"); 71 break; 72 case sub_vfy : 73 printf("verifying drive surface.\n"); 74 break; 75 case sub_rel : 76 printf("performing relocation operations.\n"); 77 break; 78 case sub_rcvr : 79 printf("recovering from hardware error.\n"); 80 break; 81 case sub_wmap : 82 printf("writing relocation map.\n"); 83 break; 84 default : 85 printf("I don't know what is happening.\n"); 86 break; 87 } 88 } 89 exdent(1); 90 } 91 92