top: cap CPU%/CPUA at 100

This commit is contained in:
K. Lange 2021-11-14 17:21:06 +09:00
parent f7a29b90af
commit 1b5352ac59
1 changed files with 12 additions and 2 deletions

View File

@ -100,8 +100,12 @@ static int print_column(struct process * proc, int column_id) {
} }
case FORMATTER_PERCENT: { case FORMATTER_PERCENT: {
int value = *(int*)((char *)proc + column->member); int value = *(int*)((char *)proc + column->member);
if (value >= 1000) {
return printf("%*d ", column->width, 100);
} else {
return printf("%*d.%01d ", column->width - 2, value / 10, value % 10); return printf("%*d.%01d ", column->width - 2, value / 10, value % 10);
} }
}
case FORMATTER_STRING: { case FORMATTER_STRING: {
char * value = *(char**)((char *)proc + column->member); char * value = *(char**)((char *)proc + column->member);
return printf("%-*s ", column->width, value); return printf("%-*s ", column->width, value);
@ -123,8 +127,12 @@ static int size_column(struct process * proc, int column_id) {
} }
case FORMATTER_PERCENT: { case FORMATTER_PERCENT: {
int value = *(int*)((char *)proc + column->member); int value = *(int*)((char *)proc + column->member);
if (value >= 1000) {
return 3;
} else {
return snprintf(garbage, 100, "%d.%01d", value / 10, value % 10); return snprintf(garbage, 100, "%d.%01d", value / 10, value % 10);
} }
}
case FORMATTER_STRING: { case FORMATTER_STRING: {
char * value = *(char**)((char *)proc + column->member); char * value = *(char**)((char *)proc + column->member);
return strlen(value); return strlen(value);
@ -276,6 +284,8 @@ struct process * process_entry(struct dirent *dent) {
cpua += strtoul(tab, &tab, 10); cpua += strtoul(tab, &tab, 10);
cpua += strtoul(tab, &tab, 10); cpua += strtoul(tab, &tab, 10);
cpua /= 4; cpua /= 4;
if (cpu > 1000) cpu = 1000;
if (cpua > 1000) cpua = 1000;
} }
} }