Module Name: src
Committed By: jmcneill
Date: Mon Feb 22 11:33:34 UTC 2021
Modified Files:
src/usr.sbin/intrctl: intrctl.c
Log Message:
In compact view, show the CPUs as a range (0-n) instead of a list
(0, 1, 2, ...) when the interrupt is assigned to all CPUs in the system.
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 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.c
diff -u src/usr.sbin/intrctl/intrctl.c:1.11 src/usr.sbin/intrctl/intrctl.c:1.12
--- src/usr.sbin/intrctl/intrctl.c:1.11 Tue Sep 24 11:31:06 2019
+++ src/usr.sbin/intrctl/intrctl.c Mon Feb 22 11:33:34 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: intrctl.c,v 1.11 2019/09/24 11:31:06 wiz Exp $ */
+/* $NetBSD: intrctl.c,v 1.12 2021/02/22 11:33:34 jmcneill Exp $ */
/*
* Copyright (c) 2015 Internet Initiative Japan Inc.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: intrctl.c,v 1.11 2019/09/24 11:31:06 wiz Exp $");
+__RCSID("$NetBSD: intrctl.c,v 1.12 2021/02/22 11:33:34 jmcneill Exp $");
#include <sys/param.h>
#include <sys/sysctl.h>
@@ -110,6 +110,22 @@ usage(void)
static int intrctl_io_alloc_retry_count = 4;
+static bool
+intrctl_list_line_allcpus(struct intrio_list_line *illine, int ncpus)
+{
+ struct intrio_list_line_cpu *illc;
+ int i;
+
+ for (i = 0; i < ncpus; i++) {
+ illc = &illine->ill_cpu[i];
+ if (illc->illc_assigned == false) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
static void
intrctl_list_one(bool compact, bool skipzero)
{
@@ -187,14 +203,20 @@ intrctl_list_one(bool compact, bool skip
printf("%-*s ", (int)intridlen, illine->ill_intrid);
if (compact) {
uint64_t total = 0;
+ bool allcpus = ncpus > 1 &&
+ intrctl_list_line_allcpus(illine, ncpus);
char *affinity = NULL, *oaffinity = NULL;
for (i = 0; i < ncpus; i++) {
illc = &illine->ill_cpu[i];
total += illc->illc_count;
+ if (allcpus && i != 0 && i != ncpus - 1) {
+ continue;
+ }
if (illc->illc_assigned) {
+ const char *sep = allcpus ? "-" : ", ";
asprintf(&affinity, "%s%s%d",
oaffinity ? oaffinity : "",
- oaffinity ? ", " : "",
+ oaffinity ? sep : "",
i);
if (oaffinity)
free(oaffinity);