Module Name: src Committed By: mrg Date: Mon Sep 23 09:17:20 UTC 2019
Modified Files: src/usr.sbin/intrctl: intrctl.8 intrctl.c intrctl_io.c Log Message: add "-w wait" arg to "intrctl list" to have it loop forever. don't bother testing poitner for NULL before calling free(). To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/usr.sbin/intrctl/intrctl.8 \ src/usr.sbin/intrctl/intrctl_io.c cvs rdiff -u -r1.8 -r1.9 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.4 src/usr.sbin/intrctl/intrctl.8:1.5 --- src/usr.sbin/intrctl/intrctl.8:1.4 Sat Oct 15 12:06:27 2016 +++ src/usr.sbin/intrctl/intrctl.8 Mon Sep 23 09:17:19 2019 @@ -1,4 +1,4 @@ -.\" $NetBSD: intrctl.8,v 1.4 2016/10/15 12:06:27 jdolecek Exp $ +.\" $NetBSD: intrctl.8,v 1.5 2019/09/23 09:17:19 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 October 15, 2016 +.Dd September 22, 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 Op Fl c +.It list Oo Fl c Oc Op Fl w Ar wait 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 @@ -64,6 +64,14 @@ If .Fl c is specified, display compact list with total counts per interrupt, and CPU affinity as comma separated list of CPU indexes. +.Pp +If +.Fl w +is specified then +.Nm +display the data continuously with a +.Ar wait +seconds delay between each iteration. .It nointr Fl c Ar cpu_index disable to set an interrupt's affinity to .Ar cpu_index . Index: src/usr.sbin/intrctl/intrctl_io.c diff -u src/usr.sbin/intrctl/intrctl_io.c:1.4 src/usr.sbin/intrctl/intrctl_io.c:1.5 --- src/usr.sbin/intrctl/intrctl_io.c:1.4 Sat Jun 23 11:11:00 2018 +++ src/usr.sbin/intrctl/intrctl_io.c Mon Sep 23 09:17:19 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: intrctl_io.c,v 1.4 2018/06/23 11:11:00 jdolecek Exp $ */ +/* $NetBSD: intrctl_io.c,v 1.5 2019/09/23 09:17:19 mrg Exp $ */ /* * Copyright (c) 2015 Internet Initiative Japan Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: intrctl_io.c,v 1.4 2018/06/23 11:11:00 jdolecek Exp $"); +__RCSID("$NetBSD: intrctl_io.c,v 1.5 2019/09/23 09:17:19 mrg Exp $"); #include <sys/sysctl.h> #include <sys/intrio.h> @@ -76,8 +76,7 @@ intrctl_io_alloc(int retry) } } error: - if (buf != NULL) - free(buf); + free(buf); return NULL; } Index: src/usr.sbin/intrctl/intrctl.c diff -u src/usr.sbin/intrctl/intrctl.c:1.8 src/usr.sbin/intrctl/intrctl.c:1.9 --- src/usr.sbin/intrctl/intrctl.c:1.8 Fri Jun 22 22:50:53 2018 +++ src/usr.sbin/intrctl/intrctl.c Mon Sep 23 09:17:19 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: intrctl.c,v 1.8 2018/06/22 22:50:53 jdolecek Exp $ */ +/* $NetBSD: intrctl.c,v 1.9 2019/09/23 09:17:19 mrg Exp $ */ /* * Copyright (c) 2015 Internet Initiative Japan Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: intrctl.c,v 1.8 2018/06/22 22:50:53 jdolecek Exp $"); +__RCSID("$NetBSD: intrctl.c,v 1.9 2019/09/23 09:17:19 mrg Exp $"); #include <sys/param.h> #include <sys/sysctl.h> @@ -99,7 +99,7 @@ usage(void) { const char *progname = getprogname(); - fprintf(stderr, "usage: %s list [-c]\n", progname); + fprintf(stderr, "usage: %s list [-c] [-w secs]\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); @@ -110,25 +110,13 @@ usage(void) static int intrctl_io_alloc_retry_count = 4; static void -intrctl_list(int argc, char **argv) +intrctl_list_one(int compact) { char buf[64]; struct intrio_list_line *illine; int i, ncpus, *cpucol; void *handle; size_t intridlen; - int compact = 0; - int ch; - - while ((ch = getopt(argc, argv, "c")) != -1) { - switch (ch) { - case 'c': - compact = 1; - break; - default: - usage(); - } - } handle = intrctl_io_alloc(intrctl_io_alloc_retry_count); if (handle == NULL) @@ -217,6 +205,34 @@ intrctl_list(int argc, char **argv) } static void +intrctl_list(int argc, char **argv) +{ + int seconds = 0; + bool compact = false; + int ch; + + while ((ch = getopt(argc, argv, "cw:")) != -1) { + switch (ch) { + case 'c': + compact = true; + break; + case 'w': + seconds = atoi(optarg); + if (seconds < 0) + errx(1, "seconds must be positive."); + break; + default: + usage(); + } + } + + do { + intrctl_list_one(compact); + sleep(seconds); + } while (seconds); +} + +static void intrctl_affinity(int argc, char **argv) { struct intrio_set iset;