1 #ifndef lint
2 static char sccsid[] = "@(#)profile.c	1.3 (Berkeley/CCI) 11/23/87";
3 #endif
4 
5 
6 #include	"vdfmt.h"
7 
8 #define	cycles	10
9 
10 /*
11 **
12 */
13 
14 profile()
15 {
16 	unsigned int	total_time, i, step, remainder;
17 	dskadr		ead, zero;
18 	char		digit_buf[20];
19 
20 	print("Disk seek profile for ");
21 	printf("controller %d, drive %d, ", cur.controller, cur.drive);
22 	printf("type %s.\n", lab->d_typename);
23 
24 	indent();
25 	if(is_formatted() == false) {
26 		print("Can not profile unformatted drives!\n");
27 		_longjmp(abort_environ, 1);
28 	}
29 	print(" Seek  |                  Seek time (ms)\n");
30 	print("Length |0    5    10   15   20   25   30   35   40   45   50\n");
31 	print("-------|-----+----+----+----+----+----+----+----+----+----+\n");
32 
33 	cur.state = prof;
34 	zero.cylinder = zero.track = zero.sector=0;
35 	ead.track = ead.sector=0;
36 	step = lab->d_ncylinders / 55;
37 	for(ead.cylinder=1; ead.cylinder<lab->d_ncylinders; ead.cylinder+=step){
38 		total_time = 0;
39 		for(i=0; i<cycles; i++) {
40 			access_dsk((char *)save, &zero, VDOP_SEEK, 1, 60);
41 			access_dsk((char *)save, &ead, VDOP_SEEK, 1, 60);
42 			if(kill_processes == true)
43 				_longjmp(quit_environ, 1);
44 			total_time += ((2*60*1000*1000) - vdtimeout);
45 		}
46 		print("");
47 		sprintf(digit_buf, "%d      ", ead.cylinder);
48 		for(i=0; i<7; i++)
49 			putchar(digit_buf[i]);
50 		putchar('|');
51 		total_time /= cycles;
52 		remainder = total_time % 10;
53 		total_time /= 10;
54 		while(total_time--)
55 			putchar(' ');
56 		if(remainder >= 5)
57 			printf("+\n");
58 		else
59 			printf("*\n");
60 		DELAY(400000);
61 	}
62 	print("-------|-----+----+----+----+----+----+----+----+----+----+\n");
63 	print("       |0    5    10   15   20   25   30   35   40   45   50\n");
64 	exdent(1);
65 	printf("Profile completed successfully.\n");
66 }
67 
68