mirror of https://github.com/xzeldon/htop.git
Linux: dynamically adjust column width of CGROUP C(ompressed)CGROUP
This commit is contained in:
parent
3ba695293c
commit
b6c0667eae
|
@ -81,8 +81,8 @@ const ProcessFieldData Process_fields[LAST_PROCESSFIELD] = {
|
||||||
[IO_READ_RATE] = { .name = "IO_READ_RATE", .title = " DISK READ ", .description = "The I/O rate of read(2) in bytes per second for the process", .flags = PROCESS_FLAG_IO, .defaultSortDesc = true, },
|
[IO_READ_RATE] = { .name = "IO_READ_RATE", .title = " DISK READ ", .description = "The I/O rate of read(2) in bytes per second for the process", .flags = PROCESS_FLAG_IO, .defaultSortDesc = true, },
|
||||||
[IO_WRITE_RATE] = { .name = "IO_WRITE_RATE", .title = " DISK WRITE ", .description = "The I/O rate of write(2) in bytes per second for the process", .flags = PROCESS_FLAG_IO, .defaultSortDesc = true, },
|
[IO_WRITE_RATE] = { .name = "IO_WRITE_RATE", .title = " DISK WRITE ", .description = "The I/O rate of write(2) in bytes per second for the process", .flags = PROCESS_FLAG_IO, .defaultSortDesc = true, },
|
||||||
[IO_RATE] = { .name = "IO_RATE", .title = " DISK R/W ", .description = "Total I/O rate in bytes per second", .flags = PROCESS_FLAG_IO, .defaultSortDesc = true, },
|
[IO_RATE] = { .name = "IO_RATE", .title = " DISK R/W ", .description = "Total I/O rate in bytes per second", .flags = PROCESS_FLAG_IO, .defaultSortDesc = true, },
|
||||||
[CGROUP] = { .name = "CGROUP", .title = "CGROUP (raw) ", .description = "Which cgroup the process is in", .flags = PROCESS_FLAG_LINUX_CGROUP, },
|
[CGROUP] = { .name = "CGROUP", .title = "CGROUP (raw)", .description = "Which cgroup the process is in", .flags = PROCESS_FLAG_LINUX_CGROUP, .autoWidth = true, },
|
||||||
[CCGROUP] = { .name = "CCGROUP", .title = "CGROUP (compressed) ", .description = "Which cgroup the process is in (condensed to essentials)", .flags = PROCESS_FLAG_LINUX_CGROUP, },
|
[CCGROUP] = { .name = "CCGROUP", .title = "CGROUP (compressed)", .description = "Which cgroup the process is in (condensed to essentials)", .flags = PROCESS_FLAG_LINUX_CGROUP, .autoWidth = true, },
|
||||||
[OOM] = { .name = "OOM", .title = " OOM ", .description = "OOM (Out-of-Memory) killer score", .flags = PROCESS_FLAG_LINUX_OOM, .defaultSortDesc = true, },
|
[OOM] = { .name = "OOM", .title = " OOM ", .description = "OOM (Out-of-Memory) killer score", .flags = PROCESS_FLAG_LINUX_OOM, .defaultSortDesc = true, },
|
||||||
[IO_PRIORITY] = { .name = "IO_PRIORITY", .title = "IO ", .description = "I/O priority", .flags = PROCESS_FLAG_LINUX_IOPRIO, },
|
[IO_PRIORITY] = { .name = "IO_PRIORITY", .title = "IO ", .description = "I/O priority", .flags = PROCESS_FLAG_LINUX_IOPRIO, },
|
||||||
#ifdef HAVE_DELAYACCT
|
#ifdef HAVE_DELAYACCT
|
||||||
|
@ -248,8 +248,8 @@ static void LinuxProcess_writeField(const Process* this, RichString* str, Proces
|
||||||
#ifdef HAVE_VSERVER
|
#ifdef HAVE_VSERVER
|
||||||
case VXID: xSnprintf(buffer, n, "%5u ", lp->vxid); break;
|
case VXID: xSnprintf(buffer, n, "%5u ", lp->vxid); break;
|
||||||
#endif
|
#endif
|
||||||
case CGROUP: xSnprintf(buffer, n, "%-35.35s ", lp->cgroup ? lp->cgroup : "N/A"); break;
|
case CGROUP: xSnprintf(buffer, n, "%-*.*s ", Process_fieldWidths[CGROUP], Process_fieldWidths[CGROUP], lp->cgroup ? lp->cgroup : "N/A"); break;
|
||||||
case CCGROUP: xSnprintf(buffer, n, "%-35.35s ", lp->cgroup_short ? lp->cgroup_short : (lp->cgroup ? lp->cgroup : "N/A")); break;
|
case CCGROUP: xSnprintf(buffer, n, "%-*.*s ", Process_fieldWidths[CCGROUP], Process_fieldWidths[CCGROUP], lp->cgroup_short ? lp->cgroup_short : (lp->cgroup ? lp->cgroup : "N/A")); break;
|
||||||
case OOM: xSnprintf(buffer, n, "%4u ", lp->oom); break;
|
case OOM: xSnprintf(buffer, n, "%4u ", lp->oom); break;
|
||||||
case IO_PRIORITY: {
|
case IO_PRIORITY: {
|
||||||
int klass = IOPriority_class(lp->ioPriority);
|
int klass = IOPriority_class(lp->ioPriority);
|
||||||
|
|
|
@ -902,16 +902,27 @@ static void LinuxProcessList_readCGroupFile(LinuxProcess* process, openat_arg_t
|
||||||
|
|
||||||
bool changed = !process->cgroup || !String_eq(process->cgroup, output);
|
bool changed = !process->cgroup || !String_eq(process->cgroup, output);
|
||||||
|
|
||||||
|
Process_updateFieldWidth(CGROUP, strlen(output));
|
||||||
free_and_xStrdup(&process->cgroup, output);
|
free_and_xStrdup(&process->cgroup, output);
|
||||||
|
|
||||||
if (!changed)
|
if (!changed) {
|
||||||
|
if(process->cgroup_short) {
|
||||||
|
Process_updateFieldWidth(CCGROUP, strlen(process->cgroup_short));
|
||||||
|
} else {
|
||||||
|
//CCGROUP is alias to normal CGROUP if shortening fails
|
||||||
|
Process_updateFieldWidth(CCGROUP, strlen(process->cgroup));
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
char* cgroup_short = CGroup_filterName(process->cgroup);
|
char* cgroup_short = CGroup_filterName(process->cgroup);
|
||||||
if (cgroup_short) {
|
if (cgroup_short) {
|
||||||
|
Process_updateFieldWidth(CCGROUP, strlen(cgroup_short));
|
||||||
free_and_xStrdup(&process->cgroup_short, cgroup_short);
|
free_and_xStrdup(&process->cgroup_short, cgroup_short);
|
||||||
free(cgroup_short);
|
free(cgroup_short);
|
||||||
} else {
|
} else {
|
||||||
|
//CCGROUP is alias to normal CGROUP if shortening fails
|
||||||
|
Process_updateFieldWidth(CCGROUP, strlen(process->cgroup));
|
||||||
free(process->cgroup_short);
|
free(process->cgroup_short);
|
||||||
process->cgroup_short = NULL;
|
process->cgroup_short = NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue