2 * Copyright (c) 1997-2001 Silicon Graphics, Inc. All Rights Reserved.
6 * scale - exercise scale conversion, pmConvScale and pmUnitsStr
13 static pmUnits iu
= PMDA_PMUNITS( 0, 1, 1, 0, PM_TIME_SEC
, 0 );
14 static pmUnits ou
= PMDA_PMUNITS( 0, 1, 1, 0, PM_TIME_SEC
, 0 );
16 static int tval
[] = { 1, 7200 };
18 { PM_TIME_NSEC
, PM_TIME_USEC
, PM_TIME_MSEC
, PM_TIME_SEC
, PM_TIME_MIN
, PM_TIME_HOUR
};
19 static int sval
[] = { 1, 1024*1024 };
21 { PM_SPACE_BYTE
, PM_SPACE_KBYTE
, PM_SPACE_MBYTE
, PM_SPACE_GBYTE
, PM_SPACE_TBYTE
};
24 main(int argc
, char **argv
)
31 static char *debug
= "[-D N] ";
33 static char *debug
= "";
35 static char *usage
= "[-v]";
47 __pmSetProgname(argv
[0]);
49 while ((c
= getopt(argc
, argv
, "D:v")) != EOF
) {
53 case 'D': /* debug flag */
54 sts
= __pmParseDebug(optarg
);
56 fprintf(stderr
, "%s: unrecognized debug flag specification (%s)\n",
65 case 'v': /* verbose */
77 fprintf(stderr
, "Usage: %s %s%s\n", pmProgname
, debug
, usage
);
81 /* non-flag args are argv[optind] ... argv[argc-1] */
83 for (d
= 1; d
>= -1; d
-=2) {
94 for (i
= 0; i
< sizeof(tval
)/sizeof(tval
[0]); i
++) {
96 for (j
= 0; j
< sizeof(tscale
)/sizeof(tscale
[0]); j
++) {
97 iu
.scaleTime
= tscale
[j
];
98 for (k
= 0; k
< sizeof(tscale
)/sizeof(tscale
[0]); k
++) {
99 ou
.scaleTime
= tscale
[k
];
101 if ((sts
= pmConvScale(PM_TYPE_64
, &iv
, &iu
, &ov
, &ou
)) < 0) {
102 printf("convert: %s\n", pmErrStr(sts
));
107 printf("%lld %s", (long long)iv
.ll
, *u
== '\0' ? "none" : u
);
109 printf(" -> %lld %s\n", (long long)ov
.ll
, *u
== '\0' ? "none" : u
);
111 if ((sts
= pmConvScale(PM_TYPE_64
, &ov
, &ou
, &tv
, &iu
)) < 0) {
112 printf("reconvert: %s\n", pmErrStr(sts
));
115 if (tv
.ll
!= iv
.ll
) {
120 printf("error? %lld %s", (long long)iv
.ll
, *u
== '\0' ? "none" : u
);
122 printf(" -> %lld %s", (long long)ov
.ll
, *u
== '\0' ? "none" : u
);
124 printf(" -> %lld %s\n", (long long)tv
.ll
, *u
== '\0' ? "none" : u
);
133 printf("\nPass 1: plus %d underflows to zero\n\n", underflow
);
142 iu
.scaleTime
= PM_TIME_SEC
;
143 for (d
= 0; d
< 4; d
+=2) {
146 for (i
= 0; i
< sizeof(sval
)/sizeof(sval
[0]); i
++) {
148 for (j
= 0; j
< sizeof(sscale
)/sizeof(sscale
[0]); j
++) {
149 iu
.scaleSpace
= sscale
[j
];
150 for (k
= 0; k
< sizeof(sscale
)/sizeof(sscale
[0]); k
++) {
151 ou
.scaleSpace
= sscale
[k
];
152 for (l
= 2; l
< sizeof(tscale
)/sizeof(tscale
[0]); l
+= 2) {
153 ou
.scaleTime
= tscale
[l
];
155 if ((sts
= pmConvScale(PM_TYPE_64
, &iv
, &iu
, &ov
, &ou
)) < 0) {
156 printf("convert: %s\n", pmErrStr(sts
));
161 printf("%lld %s", (long long)iv
.ll
, *u
== '\0' ? "none" : u
);
163 printf(" -> %lld %s\n", (long long)ov
.ll
, *u
== '\0' ? "none" : u
);
165 if ((sts
= pmConvScale(PM_TYPE_64
, &ov
, &ou
, &tv
, &iu
)) < 0) {
166 printf("reconvert: %s\n", pmErrStr(sts
));
169 if (tv
.ll
!= iv
.ll
) {
174 printf("error? %lld %s", (long long)iv
.ll
, *u
== '\0' ? "none" : u
);
176 printf(" -> %lld %s", (long long)ov
.ll
, *u
== '\0' ? "none" : u
);
178 printf(" -> %lld %s\n", (long long)tv
.ll
, *u
== '\0' ? "none" : u
);
190 printf("\nPass 2: plus %d underflows to zero\n", underflow
);
194 iu
.scaleTime
= PM_TIME_MSEC
;
195 for (d
= 1; d
> -2; d
-= 2) {
198 for (i
= 3; i
>= -3; i
--) {
200 printf("{ %3d,%3d,%3d,%3d,%3d,%3d } %s\n",
201 iu
.dimSpace
, iu
.dimTime
, iu
.dimCount
,
202 iu
.scaleSpace
, iu
.scaleTime
, iu
.scaleCount
,
206 printf("\nPass 3:\n");