|
|
1.1 root 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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.