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

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