65 строки
1.7 KiB
Diff
65 строки
1.7 KiB
Diff
From b608ddda22ac33195ba57311d42ac83facbd8695 Mon Sep 17 00:00:00 2001
|
|
From: Michal Schmidt <mschmidt@redhat.com>
|
|
Date: Thu, 16 Feb 2012 00:04:00 +0100
|
|
Subject: [PATCH 2/2] better error message
|
|
|
|
Only suggest CONFIG_LATENCYTOP on ENOENT.
|
|
Print the message after curses is cleaned up to make it visible.
|
|
---
|
|
src/latencytop.c | 18 +++++++++++++++---
|
|
1 files changed, 15 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/latencytop.c b/src/latencytop.c
|
|
index 0ffb7f3..3b62c5d 100644
|
|
--- a/src/latencytop.c
|
|
+++ b/src/latencytop.c
|
|
@@ -24,6 +24,7 @@
|
|
|
|
#define _GNU_SOURCE
|
|
|
|
+#include <errno.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
@@ -113,6 +114,17 @@ static void fixup_reason(struct latency_line *line, char *c)
|
|
strncpy(line->reason, c2, 1024);
|
|
}
|
|
|
|
+static int die_errno;
|
|
+
|
|
+static void print_error_msg(void) {
|
|
+ if (!die_errno)
|
|
+ return;
|
|
+
|
|
+ fprintf(stderr, "Failed to open /proc/latency_stats: %s\n", strerror(die_errno));
|
|
+ if (die_errno == ENOENT)
|
|
+ fprintf(stderr, "Please enable the CONFIG_LATENCYTOP configuration in your kernel.\n");
|
|
+}
|
|
+
|
|
void parse_global_list(void)
|
|
{
|
|
FILE *file;
|
|
@@ -120,8 +132,7 @@ void parse_global_list(void)
|
|
size_t dummy;
|
|
file = fopen("/proc/latency_stats","r+");
|
|
if (!file) {
|
|
- fprintf(stderr, "Please enable the CONFIG_LATENCYTOP configuration in your kernel.\n");
|
|
- fprintf(stderr, "Exiting...\n");
|
|
+ die_errno = errno;
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
/* wipe first line */
|
|
@@ -540,7 +551,8 @@ int main(int argc, char **argv)
|
|
|
|
enable_sysctl();
|
|
atexit(cleanup_sysctl);
|
|
-
|
|
+ /* needs to run after curses is gone */
|
|
+ atexit(print_error_msg);
|
|
#ifdef HAS_GTK_GUI
|
|
if (preinitialize_gtk_ui(&argc, &argv))
|
|
use_gtk = 1;
|
|
--
|
|
1.7.7.6
|
|
|