Blame SOURCES/0013-irqbalance-ui-print-cpulist-in-SETUP-IRQS.patch

214087
From 577796abe7337c8df446c082688816ec22804876 Mon Sep 17 00:00:00 2001
214087
From: Liu Chao <liuchao173@huawei.com>
214087
Date: Mon, 11 Jul 2022 11:12:06 +0800
214087
Subject: [PATCH 13/14] irqbalance-ui: print cpulist in SETUP IRQS
214087
214087
save space for printing interrupt names
214087
214087
Signed-off-by: Liu Chao <liuchao173@huawei.com>
214087
---
214087
 ui/ui.c | 30 +++++++++++++++++++++++++++---
214087
 1 file changed, 27 insertions(+), 3 deletions(-)
214087
214087
diff --git a/ui/ui.c b/ui/ui.c
214087
index 2dad442..f1490d5 100644
214087
--- a/ui/ui.c
214087
+++ b/ui/ui.c
214087
@@ -352,9 +352,32 @@ void handle_cpu_banning()
214087
 	}
214087
 }
214087
 
214087
+static int rbot, rtop;
214087
+
214087
+static inline void bsnl_emit(char *buf, int buflen)
214087
+{
214087
+	int len = strlen(buf);
214087
+	if (len > 0) {
214087
+		snprintf(buf + len, buflen - len, ",");
214087
+		len++;
214087
+	}
214087
+	if (rbot == rtop)
214087
+		snprintf(buf + len, buflen - len, "%d", rbot);
214087
+	else
214087
+		snprintf(buf + len, buflen - len, "%d-%d", rbot, rtop);
214087
+}
214087
+
214087
 void copy_assigned_obj(int *number, void *data)
214087
 {
214087
-	snprintf(data + strlen(data), 128 - strlen(data), "%d, ", *number);
214087
+	if (rtop == -1) {
214087
+		rbot = rtop = *number;
214087
+		return;
214087
+	}
214087
+	if (*number > rtop + 1) {
214087
+		bsnl_emit(data, 128);
214087
+		rbot = *number;
214087
+	}
214087
+	rtop = *number;
214087
 }
214087
 
214087
 void print_assigned_objects_string(irq_t *irq, int *line_offset)
214087
@@ -363,9 +386,10 @@ void print_assigned_objects_string(irq_t *irq, int *line_offset)
214087
 		return;
214087
 	}
214087
 	char assigned_to[128] = "\0";
214087
+	rtop = -1;
214087
 	for_each_int(irq->assigned_to, copy_assigned_obj, assigned_to);
214087
-	assigned_to[strlen(assigned_to) - 2] = '\0';
214087
-	mvprintw(*line_offset, 68, "%s", assigned_to);
214087
+	bsnl_emit(assigned_to, 128);
214087
+	mvprintw(*line_offset, 68, "%s             ", assigned_to);
214087
 }
214087
 
214087
 void print_tmp_irq_line(irq_t *irq, void *data __attribute__((unused)))
214087
-- 
214087
2.33.1
214087