summaryrefslogtreecommitdiff
path: root/usr.bin/pctr/pctr.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/pctr/pctr.c')
-rw-r--r--usr.bin/pctr/pctr.c147
1 files changed, 72 insertions, 75 deletions
diff --git a/usr.bin/pctr/pctr.c b/usr.bin/pctr/pctr.c
index 370a8bc1c84..d89022eb900 100644
--- a/usr.bin/pctr/pctr.c
+++ b/usr.bin/pctr/pctr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pctr.c,v 1.11 2003/08/04 17:06:44 deraadt Exp $ */
+/* $OpenBSD: pctr.c,v 1.12 2004/12/19 13:26:48 deraadt Exp $ */
/*
* Pentium performance counter control program for OpenBSD.
@@ -128,7 +128,7 @@ struct ctrfn p6fn[] = {
"Number of modified lines removed from the L2 for any reason."},
{0x28, CFL_MESI, "L2_IFETCH",
"Number of L2 instruction fetches."},
- {0x29, CFL_MESI, "L2_LD",
+ {0x29, CFL_MESI, "L2_LD",
"Number of L2 data loads."},
{0x2a, CFL_MESI, "L2_ST",
"Number of L2 data stores."},
@@ -161,7 +161,7 @@ struct ctrfn p6fn[] = {
"Number of burst read transactions."},
{0x66, CFL_SA, "BUS_TRAN_RFO",
"Number of read for ownership transactions."},
- {0x67, CFL_SA, "BUS_TRANS_WB",
+ {0x67, CFL_SA, "BUS_TRANS_WB",
"Number of write back transactions."},
{0x68, CFL_SA, "BUS_TRAN_IFETCH",
"Number of instruction fetch transactions."},
@@ -277,7 +277,7 @@ list(int fam)
cfnp = p6fn;
else {
fprintf(stderr, "Unknown CPU family %d\n", fam);
- exit (1);
+ exit(1);
}
printf("Hardware counter functions for the %s:\n\n",
fam == 5 ? "Pentium" : "Pentium Pro");
@@ -326,7 +326,7 @@ fn2str(int family, u_int sel)
if (family == 5) {
fn = sel & 0x3f;
- cfnp = fn2cfnp (family, fn);
+ cfnp = fn2cfnp(family, fn);
snprintf(buf, sizeof buf, "%c%c%c %02x %s",
sel & P5CTR_C ? 'c' : '-',
sel & P5CTR_U ? 'u' : '-',
@@ -334,7 +334,7 @@ fn2str(int family, u_int sel)
fn, cfnp ? cfnp->name : "unknown function");
} else if (family == 6) {
fn = sel & 0xff;
- cfnp = fn2cfnp (family, fn);
+ cfnp = fn2cfnp(family, fn);
if (cfnp && cfnp->flags & CFL_MESI)
snprintf(um, sizeof um, "/%c%c%c%c",
sel & P6CTR_UM_M ? 'm' : '-',
@@ -351,7 +351,7 @@ fn2str(int family, u_int sel)
sel & P6CTR_E ? 'e' : '-',
sel & P6CTR_K ? 'k' : '-',
sel & P6CTR_U ? 'u' : '-',
- fn, cm, um, 7 - (strlen (cm) + strlen (um)), "",
+ fn, cm, um, 7 - (strlen(cm) + strlen(um)), "",
cfnp ? cfnp->name : "unknown function");
} else
return (NULL);
@@ -365,17 +365,17 @@ readst(void)
int fd, i;
struct pctrst st;
- fd = open (_PATH_PCTR, O_RDONLY);
+ fd = open(_PATH_PCTR, O_RDONLY);
if (fd < 0)
- err (1, _PATH_PCTR);
- if (ioctl (fd, PCIOCRD, &st) < 0)
- err (1, "PCIOCRD");
- close (fd);
+ err(1, _PATH_PCTR);
+ if (ioctl(fd, PCIOCRD, &st) < 0)
+ err(1, "PCIOCRD");
+ close(fd);
if (usep5ctr || usep6ctr) {
for (i = 0; i < PCTR_NUM; i++)
printf(" ctr%d = %16qd [%s]\n", i, st.pctr_hwc[i],
- fn2str (cpufamily, st.pctr_fn[i]));
+ fn2str(cpufamily, st.pctr_fn[i]));
}
printf(" tsc = %16qd\n idl = %16qd\n", st.pctr_tsc, st.pctr_idl);
}
@@ -385,59 +385,56 @@ setctr(int ctr, u_int val)
{
int fd;
- fd = open (_PATH_PCTR, O_WRONLY);
+ fd = open(_PATH_PCTR, O_WRONLY);
if (fd < 0)
- err (1, _PATH_PCTR);
- if (ioctl (fd, PCIOCS0 + ctr, &val) < 0)
- err (1, "PCIOCSn");
- close (fd);
+ err(1, _PATH_PCTR);
+ if (ioctl(fd, PCIOCS0 + ctr, &val) < 0)
+ err(1, "PCIOCSn");
+ close(fd);
}
static void
usage(void)
{
fprintf(stderr,
- "usage:\n"
- " %s\n"
- " Read the counters.\n"
- " %s -l [5|6]\n"
- " List all possible counter functions for P5/P6.\n",
- __progname, __progname);
+ "usage:\n"
+ " %s\n"
+ " Read the counters.\n"
+ " %s -l [5|6]\n"
+ " List all possible counter functions for P5/P6.\n",
+ __progname, __progname);
if (usep5ctr)
fprintf(stderr,
- " %s -s {0|1} [-[c][u][k]] function\n"
- " Configure counter.\n"
- " 0/1 - counter to configure\n"
- " c - count cycles not events\n"
- " u - count events in user mode (ring 3)\n"
- " k - count events in kernel mode (rings 0-2)\n",
- __progname);
+ " %s -s {0|1} [-[c][u][k]] function\n"
+ " Configure counter.\n"
+ " 0/1 - counter to configure\n"
+ " c - count cycles not events\n"
+ " u - count events in user mode (ring 3)\n"
+ " k - count events in kernel mode (rings 0-2)\n",
+ __progname);
else if (usep6ctr)
fprintf(stderr,
- " %s -s {0|1} [-[i][e][k][u]] "
- "function[+cm][/{[m][e][s][i]|[a]}]\n"
- " Configure counter.\n"
- " 0/1 - counter number to configure\n"
- " i - invert cm\n"
- " e - edge detect\n"
- " k - count events in kernel mode (rings 0-2)\n"
- " u - count events in user mode (ring 3)\n"
- " cm - # events/cycle required to bump ctr\n"
- " mesi - Modified/Exclusive/Shared/Invalid in cache\n"
- " s/a - self generated/all events\n", __progname);
- exit (1);
+ " %s -s {0|1} [-[i][e][k][u]] "
+ "function[+cm][/{[m][e][s][i]|[a]}]\n"
+ " Configure counter.\n"
+ " 0/1 - counter number to configure\n"
+ " i - invert cm\n"
+ " e - edge detect\n"
+ " k - count events in kernel mode (rings 0-2)\n"
+ " u - count events in user mode (ring 3)\n"
+ " cm - # events/cycle required to bump ctr\n"
+ " mesi - Modified/Exclusive/Shared/Invalid in cache\n"
+ " s/a - self generated/all events\n", __progname);
+ exit(1);
}
int
main(int argc, char **argv)
{
- u_int ctr;
- char *cp;
- u_int fn, fl = 0;
- char **ap;
- int ac;
+ char *cp, **ap;
+ u_int ctr, fn, fl = 0;
struct ctrfn *cfnp;
- int mib[2];
+ int mib[2], ac;
size_t len;
/* Get the kernel cpuid return values. */
@@ -463,20 +460,20 @@ main(int argc, char **argv)
pctr_isintel = (strcmp(cpu_vendor, "GenuineIntel") == 0);
if (argc <= 1)
- readst ();
- else if (argc == 2 && !strcmp (argv[1], "-l"))
- list (cpufamily);
- else if (argc == 3 && !strcmp (argv[1], "-l"))
- list (atoi (argv[2]));
- else if (!strcmp (argv[1], "-s") && argc >= 4) {
- ctr = atoi (argv[2]);
+ readst();
+ else if (argc == 2 && !strcmp(argv[1], "-l"))
+ list(cpufamily);
+ else if (argc == 3 && !strcmp(argv[1], "-l"))
+ list(atoi(argv[2]));
+ else if (!strcmp(argv[1], "-s") && argc >= 4) {
+ ctr = atoi(argv[2]);
if (ctr >= PCTR_NUM)
- usage ();
+ usage();
ap = &argv[3];
ac = argc - 3;
if (usep6ctr)
- fl |= P6CTR_EN;
+ fl |= P6CTR_EN;
if (**ap == '-') {
cp = *ap;
if (usep6ctr) {
@@ -495,9 +492,9 @@ main(int argc, char **argv)
fl |= P6CTR_U;
break;
default:
- usage ();
+ usage();
}
- } else if(usep5ctr) {
+ } else if (usep5ctr) {
while (*++cp)
switch (*cp) {
case 'c':
@@ -510,7 +507,7 @@ main(int argc, char **argv)
fl |= P5CTR_U;
break;
default:
- usage ();
+ usage();
}
}
ap++;
@@ -523,21 +520,21 @@ main(int argc, char **argv)
}
if (!ac)
- usage ();
+ usage();
- fn = strtoul (*ap, NULL, 16);
+ fn = strtoul(*ap, NULL, 16);
if ((usep6ctr && (fn & ~0xff)) || (!usep6ctr && (fn & ~0x3f)))
- usage ();
+ usage();
fl |= fn;
- if (usep6ctr && (cp = strchr (*ap, '+'))) {
+ if (usep6ctr && (cp = strchr(*ap, '+'))) {
cp++;
- fn = strtol (cp, NULL, 0);
+ fn = strtol(cp, NULL, 0);
if (fn & ~0xff)
- usage ();
+ usage();
fl |= (fn << 24);
}
- cfnp = fn2cfnp (6, fl);
- if (usep6ctr && cfnp && (cp = strchr (*ap, '/'))) {
+ cfnp = fn2cfnp(6, fl);
+ if (usep6ctr && cfnp && (cp = strchr(*ap, '/'))) {
if (cfnp->flags & CFL_MESI) {
while (*++cp)
switch (*cp) {
@@ -554,7 +551,7 @@ main(int argc, char **argv)
fl |= P6CTR_UM_I;
break;
default:
- usage ();
+ usage();
}
} else if (cfnp->flags & CFL_SA) {
while (*++cp)
@@ -563,23 +560,23 @@ main(int argc, char **argv)
fl |= P6CTR_UM_A;
break;
default:
- usage ();
+ usage();
}
} else
- usage ();
+ usage();
} else if (cfnp && (cfnp->flags & CFL_MESI))
fl |= P6CTR_UM_MESI;
ap++;
ac--;
if (ac)
- usage ();
+ usage();
if (usep6ctr && ! (fl & 0xff))
fl = 0;
- setctr (ctr, fl);
+ setctr(ctr, fl);
} else
- usage ();
+ usage();
return 0;
}