Module Name: src
Committed By: mrg
Date: Mon Sep 23 20:15:31 UTC 2019
Modified Files:
src/usr.sbin/intrctl: intrctl.8 intrctl.c
Log Message:
add -z flag to intrctl list, which elides all-zero rows.
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/intrctl/intrctl.8
cvs rdiff -u -r1.9 -r1.10 src/usr.sbin/intrctl/intrctl.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/intrctl/intrctl.8
diff -u src/usr.sbin/intrctl/intrctl.8:1.5 src/usr.sbin/intrctl/intrctl.8:1.6
--- src/usr.sbin/intrctl/intrctl.8:1.5 Mon Sep 23 09:17:19 2019
+++ src/usr.sbin/intrctl/intrctl.8 Mon Sep 23 20:15:31 2019
@@ -1,4 +1,4 @@
-.\" $NetBSD: intrctl.8,v 1.5 2019/09/23 09:17:19 mrg Exp $
+.\" $NetBSD: intrctl.8,v 1.6 2019/09/23 20:15:31 mrg Exp $
.\"
.\" Copyright (c) 2015 Internet Initiative Japan Inc.
.\" All rights reserved.
@@ -24,7 +24,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd September 22, 2019
+.Dd September 23, 2019
.Dt INTRCTL 8
.Os
.Sh NAME
@@ -56,7 +56,7 @@ enable to set an interrupt's affinity to
If
.Ar cpu_index
is already enabled, this command has no effect.
-.It list Oo Fl c Oc Op Fl w Ar wait
+.It list Oo Fl c Oc Oo Fl w Ar wait Oc Op Fl z
for each intrid in the system, display interrupt counts per CPU.
The intrid is an interrupt name such as "ioapic0 pin 22" for x86.
.Pp
@@ -72,6 +72,10 @@ is specified then
display the data continuously with a
.Ar wait
seconds delay between each iteration.
+.Pp
+If
+.Fl z
+is specified then rows with all CPUs having zero interrupts will be skipped.
.It nointr Fl c Ar cpu_index
disable to set an interrupt's affinity to
.Ar cpu_index .
Index: src/usr.sbin/intrctl/intrctl.c
diff -u src/usr.sbin/intrctl/intrctl.c:1.9 src/usr.sbin/intrctl/intrctl.c:1.10
--- src/usr.sbin/intrctl/intrctl.c:1.9 Mon Sep 23 09:17:19 2019
+++ src/usr.sbin/intrctl/intrctl.c Mon Sep 23 20:15:31 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: intrctl.c,v 1.9 2019/09/23 09:17:19 mrg Exp $ */
+/* $NetBSD: intrctl.c,v 1.10 2019/09/23 20:15:31 mrg Exp $ */
/*
* Copyright (c) 2015 Internet Initiative Japan Inc.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: intrctl.c,v 1.9 2019/09/23 09:17:19 mrg Exp $");
+__RCSID("$NetBSD: intrctl.c,v 1.10 2019/09/23 20:15:31 mrg Exp $");
#include <sys/param.h>
#include <sys/sysctl.h>
@@ -99,8 +99,9 @@ usage(void)
{
const char *progname = getprogname();
- fprintf(stderr, "usage: %s list [-c] [-w secs]\n", progname);
- fprintf(stderr, " %s affinity -i interrupt_name -c cpu_index\n", progname);
+ fprintf(stderr, "usage: %s list [-c] [-w secs] [-z]\n", progname);
+ fprintf(stderr, " %s affinity -i interrupt_name -c cpu_index\n",
+ progname);
fprintf(stderr, " %s intr -c cpu_index\n", progname);
fprintf(stderr, " %s nointr -c cpu_index\n", progname);
exit(EXIT_FAILURE);
@@ -110,7 +111,7 @@ usage(void)
static int intrctl_io_alloc_retry_count = 4;
static void
-intrctl_list_one(int compact)
+intrctl_list_one(bool compact, bool skipzero)
{
char buf[64];
struct intrio_list_line *illine;
@@ -169,6 +170,20 @@ intrctl_list_one(int compact)
illine = intrctl_io_nextline(handle, illine)) {
struct intrio_list_line_cpu *illc;
+ if (skipzero) {
+ bool is_zero = true;
+
+ for (i = 0; i < ncpus; i++) {
+ illc = &illine->ill_cpu[i];
+ if (illc->illc_count != 0) {
+ is_zero = false;
+ break;
+ }
+ }
+ if (is_zero)
+ continue;
+ }
+
printf("%-*s ", (int)intridlen, illine->ill_intrid);
if (compact) {
uint64_t total = 0;
@@ -209,13 +224,17 @@ intrctl_list(int argc, char **argv)
{
int seconds = 0;
bool compact = false;
+ bool skipzero = false;
int ch;
- while ((ch = getopt(argc, argv, "cw:")) != -1) {
+ while ((ch = getopt(argc, argv, "cw:z")) != -1) {
switch (ch) {
case 'c':
compact = true;
break;
+ case 'z':
+ skipzero = true;
+ break;
case 'w':
seconds = atoi(optarg);
if (seconds < 0)
@@ -226,10 +245,12 @@ intrctl_list(int argc, char **argv)
}
}
- do {
- intrctl_list_one(compact);
+ for (;;) {
+ intrctl_list_one(compact, skipzero);
+ if (seconds == 0)
+ break;
sleep(seconds);
- } while (seconds);
+ }
}
static void