summaryrefslogtreecommitdiffstats
path: root/CRT.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2010-08-24 23:20:38 +0000
committerHisham Muhammad <hisham@gobolinux.org>2010-08-24 23:20:38 +0000
commit6486229308cf7acc7a4ba7dd5f755cdb969372ef (patch)
tree380c7bd90256bc93d8babf0eda6fecefcfa06d74 /CRT.c
parentc166e172a8f46c710fbba5996f8f332f4c4984ce (diff)
add support for steal/guest CPU time measurement
simplify processor data accounting (add CPUData structure) remove Process_clone trick
Diffstat (limited to 'CRT.c')
-rw-r--r--CRT.c78
1 files changed, 49 insertions, 29 deletions
diff --git a/CRT.c b/CRT.c
index 22bc248c..a9811aab 100644
--- a/CRT.c
+++ b/CRT.c
@@ -11,6 +11,7 @@ in the source distribution for its full text.
#include <signal.h>
#include <stdlib.h>
#include <stdbool.h>
+#include <execinfo.h>
#include "String.h"
@@ -93,14 +94,16 @@ typedef enum ColorElements_ {
CHECK_MARK,
CHECK_TEXT,
CLOCK,
+ HELP_BOLD,
+ HOSTNAME,
CPU_NICE,
CPU_NORMAL,
CPU_KERNEL,
- HELP_BOLD,
CPU_IOWAIT,
CPU_IRQ,
CPU_SOFTIRQ,
- HOSTNAME,
+ CPU_STEAL,
+ CPU_GUEST,
LAST_COLORELEMENT
} ColorElements;
@@ -116,11 +119,16 @@ int CRT_colors[LAST_COLORELEMENT] = { 0 };
char* CRT_termType;
+void *backtraceArray[128];
+
static void CRT_handleSIGSEGV(int sgn) {
(void) sgn;
CRT_done();
- fprintf(stderr, "htop " VERSION " aborted. Please report bug at http://htop.sf.net\n");
- exit(1);
+ fprintf(stderr, "\n\nhtop " VERSION " aborting. Please report bug at http://htop.sf.net\n");
+ size_t size = backtrace(backtraceArray, sizeof(backtraceArray));
+ fprintf(stderr, "Backtrace: \n");
+ backtrace_symbols_fd(backtraceArray, size, 2);
+ abort();
}
static void CRT_handleSIGTERM(int sgn) {
@@ -257,17 +265,19 @@ void CRT_setColors(int colorScheme) {
CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD;
CRT_colors[LOAD] = A_BOLD;
CRT_colors[HELP_BOLD] = A_BOLD;
- CRT_colors[CPU_NICE] = A_NORMAL;
- CRT_colors[CPU_NORMAL] = A_BOLD;
- CRT_colors[CPU_KERNEL] = A_BOLD;
CRT_colors[CLOCK] = A_BOLD;
CRT_colors[CHECK_BOX] = A_BOLD;
CRT_colors[CHECK_MARK] = A_NORMAL;
CRT_colors[CHECK_TEXT] = A_NORMAL;
+ CRT_colors[HOSTNAME] = A_BOLD;
+ CRT_colors[CPU_NICE] = A_NORMAL;
+ CRT_colors[CPU_NORMAL] = A_BOLD;
+ CRT_colors[CPU_KERNEL] = A_BOLD;
CRT_colors[CPU_IOWAIT] = A_NORMAL;
CRT_colors[CPU_IRQ] = A_BOLD;
CRT_colors[CPU_SOFTIRQ] = A_BOLD;
- CRT_colors[HOSTNAME] = A_BOLD;
+ CRT_colors[CPU_STEAL] = A_REVERSE;
+ CRT_colors[CPU_GUEST] = A_REVERSE;
} else if (CRT_colorScheme == COLORSCHEME_BLACKONWHITE) {
CRT_colors[RESET_COLOR] = ColorPair(Black,White);
CRT_colors[DEFAULT_COLOR] = ColorPair(Black,White);
@@ -316,17 +326,19 @@ void CRT_setColors(int colorScheme) {
CRT_colors[LOAD_AVERAGE_ONE] = ColorPair(Black,White);
CRT_colors[LOAD] = ColorPair(Black,White);
CRT_colors[HELP_BOLD] = ColorPair(Blue,White);
- CRT_colors[CPU_NICE] = ColorPair(Cyan,White);
- CRT_colors[CPU_NORMAL] = ColorPair(Green,White);
- CRT_colors[CPU_KERNEL] = ColorPair(Red,White);
CRT_colors[CLOCK] = ColorPair(Black,White);
CRT_colors[CHECK_BOX] = ColorPair(Blue,White);
CRT_colors[CHECK_MARK] = ColorPair(Black,White);
CRT_colors[CHECK_TEXT] = ColorPair(Black,White);
+ CRT_colors[HOSTNAME] = ColorPair(Black,White);
+ CRT_colors[CPU_NICE] = ColorPair(Cyan,White);
+ CRT_colors[CPU_NORMAL] = ColorPair(Green,White);
+ CRT_colors[CPU_KERNEL] = ColorPair(Red,White);
CRT_colors[CPU_IOWAIT] = A_BOLD | ColorPair(Black, Black);
CRT_colors[CPU_IRQ] = ColorPair(Blue,White);
CRT_colors[CPU_SOFTIRQ] = ColorPair(Blue,White);
- CRT_colors[HOSTNAME] = ColorPair(Black,White);
+ CRT_colors[CPU_STEAL] = ColorPair(Cyan,White);
+ CRT_colors[CPU_GUEST] = ColorPair(Cyan,White);
} else if (CRT_colorScheme == COLORSCHEME_BLACKONWHITE2) {
CRT_colors[RESET_COLOR] = ColorPair(Black,Black);
CRT_colors[DEFAULT_COLOR] = ColorPair(Black,Black);
@@ -375,17 +387,19 @@ void CRT_setColors(int colorScheme) {
CRT_colors[LOAD_AVERAGE_ONE] = ColorPair(Black,Black);
CRT_colors[LOAD] = ColorPair(White,Black);
CRT_colors[HELP_BOLD] = ColorPair(Blue,Black);
- CRT_colors[CPU_NICE] = ColorPair(Cyan,Black);
- CRT_colors[CPU_NORMAL] = ColorPair(Green,Black);
- CRT_colors[CPU_KERNEL] = ColorPair(Red,Black);
CRT_colors[CLOCK] = ColorPair(White,Black);
CRT_colors[CHECK_BOX] = ColorPair(Blue,Black);
CRT_colors[CHECK_MARK] = ColorPair(Black,Black);
CRT_colors[CHECK_TEXT] = ColorPair(Black,Black);
+ CRT_colors[HOSTNAME] = ColorPair(White,Black);
+ CRT_colors[CPU_NICE] = ColorPair(Cyan,Black);
+ CRT_colors[CPU_NORMAL] = ColorPair(Green,Black);
+ CRT_colors[CPU_KERNEL] = ColorPair(Red,Black);
CRT_colors[CPU_IOWAIT] = A_BOLD | ColorPair(Black, Black);
CRT_colors[CPU_IRQ] = A_BOLD | ColorPair(Blue,Black);
CRT_colors[CPU_SOFTIRQ] = ColorPair(Blue,Black);
- CRT_colors[HOSTNAME] = ColorPair(White,Black);
+ CRT_colors[CPU_STEAL] = ColorPair(Black,Black);
+ CRT_colors[CPU_GUEST] = ColorPair(Black,Black);
} else if (CRT_colorScheme == COLORSCHEME_MIDNIGHT) {
CRT_colors[RESET_COLOR] = ColorPair(White,Blue);
CRT_colors[DEFAULT_COLOR] = ColorPair(White,Blue);
@@ -434,17 +448,19 @@ void CRT_setColors(int colorScheme) {
CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD | ColorPair(White,Blue);
CRT_colors[LOAD] = A_BOLD | ColorPair(White,Blue);
CRT_colors[HELP_BOLD] = A_BOLD | ColorPair(Cyan,Blue);
- CRT_colors[CPU_NICE] = A_BOLD | ColorPair(Cyan,Blue);
- CRT_colors[CPU_NORMAL] = A_BOLD | ColorPair(Green,Blue);
- CRT_colors[CPU_KERNEL] = A_BOLD | ColorPair(Red,Blue);
CRT_colors[CLOCK] = ColorPair(White,Blue);
CRT_colors[CHECK_BOX] = ColorPair(Cyan,Blue);
CRT_colors[CHECK_MARK] = A_BOLD | ColorPair(White,Blue);
CRT_colors[CHECK_TEXT] = A_NORMAL | ColorPair(White,Blue);
- CRT_colors[CPU_IOWAIT] = ColorPair(Yellow,Blue);
+ CRT_colors[HOSTNAME] = ColorPair(White,Blue);
+ CRT_colors[CPU_NICE] = A_BOLD | ColorPair(Cyan,Blue);
+ CRT_colors[CPU_NORMAL] = A_BOLD | ColorPair(Green,Blue);
+ CRT_colors[CPU_KERNEL] = A_BOLD | ColorPair(Red,Blue);
+ CRT_colors[CPU_IOWAIT] = A_BOLD | ColorPair(Blue,Blue);
CRT_colors[CPU_IRQ] = A_BOLD | ColorPair(Black,Blue);
CRT_colors[CPU_SOFTIRQ] = ColorPair(Black,Blue);
- CRT_colors[HOSTNAME] = ColorPair(White,Blue);
+ CRT_colors[CPU_STEAL] = ColorPair(White,Blue);
+ CRT_colors[CPU_GUEST] = ColorPair(White,Blue);
} else if (CRT_colorScheme == COLORSCHEME_BLACKNIGHT) {
CRT_colors[RESET_COLOR] = ColorPair(Cyan,Black);
CRT_colors[DEFAULT_COLOR] = ColorPair(Cyan,Black);
@@ -493,17 +509,19 @@ void CRT_setColors(int colorScheme) {
CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD | ColorPair(Green,Black);
CRT_colors[LOAD] = A_BOLD;
CRT_colors[HELP_BOLD] = A_BOLD | ColorPair(Cyan,Black);
- CRT_colors[CPU_NICE] = ColorPair(Blue,Black);
- CRT_colors[CPU_NORMAL] = ColorPair(Green,Black);
- CRT_colors[CPU_KERNEL] = ColorPair(Red,Black);
CRT_colors[CLOCK] = ColorPair(Green,Black);
CRT_colors[CHECK_BOX] = ColorPair(Green,Black);
CRT_colors[CHECK_MARK] = A_BOLD | ColorPair(Green,Black);
CRT_colors[CHECK_TEXT] = ColorPair(Cyan,Black);
+ CRT_colors[HOSTNAME] = ColorPair(Green,Black);
+ CRT_colors[CPU_NICE] = ColorPair(Blue,Black);
+ CRT_colors[CPU_NORMAL] = ColorPair(Green,Black);
+ CRT_colors[CPU_KERNEL] = ColorPair(Red,Black);
CRT_colors[CPU_IOWAIT] = ColorPair(Yellow,Black);
CRT_colors[CPU_IRQ] = A_BOLD | ColorPair(Blue,Black);
CRT_colors[CPU_SOFTIRQ] = ColorPair(Blue,Black);
- CRT_colors[HOSTNAME] = ColorPair(Green,Black);
+ CRT_colors[CPU_STEAL] = ColorPair(Cyan,Black);
+ CRT_colors[CPU_GUEST] = ColorPair(Cyan,Black);
} else {
/* Default */
CRT_colors[RESET_COLOR] = ColorPair(White,Black);
@@ -553,16 +571,18 @@ void CRT_setColors(int colorScheme) {
CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD;
CRT_colors[LOAD] = A_BOLD;
CRT_colors[HELP_BOLD] = A_BOLD | ColorPair(Cyan,Black);
- CRT_colors[CPU_NICE] = ColorPair(Blue,Black);
- CRT_colors[CPU_NORMAL] = ColorPair(Green,Black);
- CRT_colors[CPU_KERNEL] = ColorPair(Red,Black);
CRT_colors[CLOCK] = A_BOLD;
CRT_colors[CHECK_BOX] = ColorPair(Cyan,Black);
CRT_colors[CHECK_MARK] = A_BOLD;
CRT_colors[CHECK_TEXT] = A_NORMAL;
+ CRT_colors[HOSTNAME] = A_BOLD;
+ CRT_colors[CPU_NICE] = ColorPair(Blue,Black);
+ CRT_colors[CPU_NORMAL] = ColorPair(Green,Black);
+ CRT_colors[CPU_KERNEL] = ColorPair(Red,Black);
CRT_colors[CPU_IOWAIT] = A_BOLD | ColorPair(Black, Black);
CRT_colors[CPU_IRQ] = ColorPair(Yellow,Black);
CRT_colors[CPU_SOFTIRQ] = ColorPair(Magenta,Black);
- CRT_colors[HOSTNAME] = A_BOLD;
+ CRT_colors[CPU_STEAL] = ColorPair(Cyan,Black);
+ CRT_colors[CPU_GUEST] = ColorPair(Cyan,Black);
}
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy