mirror of https://github.com/xzeldon/htop.git
Solaris: improve process columns
- fill tty name - fill session id - show real tgid not adjusted - drop unimplemented TPGID, MINFLT and MAJFLT - adjust header width of ZONEID, which get auto-adjusted as a pid-column
This commit is contained in:
parent
013d2efa51
commit
a62987c787
|
@ -29,9 +29,9 @@ const ProcessFieldData Process_fields[LAST_PROCESSFIELD] = {
|
||||||
[PGRP] = { .name = "PGRP", .title = "PGRP", .description = "Process group ID", .flags = 0, .pidColumn = true, },
|
[PGRP] = { .name = "PGRP", .title = "PGRP", .description = "Process group ID", .flags = 0, .pidColumn = true, },
|
||||||
[SESSION] = { .name = "SESSION", .title = "SID", .description = "Process's session ID", .flags = 0, .pidColumn = true, },
|
[SESSION] = { .name = "SESSION", .title = "SID", .description = "Process's session ID", .flags = 0, .pidColumn = true, },
|
||||||
[TTY] = { .name = "TTY", .title = "TTY ", .description = "Controlling terminal", .flags = 0, },
|
[TTY] = { .name = "TTY", .title = "TTY ", .description = "Controlling terminal", .flags = 0, },
|
||||||
[TPGID] = { .name = "TPGID", .title = "TPGID", .description = "Process ID of the fg process group of the controlling terminal", .flags = 0, .pidColumn = true, },
|
//[TPGID] = { .name = "TPGID", .title = "TPGID", .description = "Process ID of the fg process group of the controlling terminal", .flags = 0, .pidColumn = true, },
|
||||||
[MINFLT] = { .name = "MINFLT", .title = " MINFLT ", .description = "Number of minor faults which have not required loading a memory page from disk", .flags = 0, .defaultSortDesc = true, },
|
//[MINFLT] = { .name = "MINFLT", .title = " MINFLT ", .description = "Number of minor faults which have not required loading a memory page from disk", .flags = 0, .defaultSortDesc = true, },
|
||||||
[MAJFLT] = { .name = "MAJFLT", .title = " MAJFLT ", .description = "Number of major faults which have required loading a memory page from disk", .flags = 0, .defaultSortDesc = true, },
|
//[MAJFLT] = { .name = "MAJFLT", .title = " MAJFLT ", .description = "Number of major faults which have required loading a memory page from disk", .flags = 0, .defaultSortDesc = true, },
|
||||||
[PRIORITY] = { .name = "PRIORITY", .title = "PRI ", .description = "Kernel's internal priority for the process", .flags = 0, },
|
[PRIORITY] = { .name = "PRIORITY", .title = "PRI ", .description = "Kernel's internal priority for the process", .flags = 0, },
|
||||||
[NICE] = { .name = "NICE", .title = " NI ", .description = "Nice value (the higher the value, the more it lets other processes take priority)", .flags = 0, },
|
[NICE] = { .name = "NICE", .title = " NI ", .description = "Nice value (the higher the value, the more it lets other processes take priority)", .flags = 0, },
|
||||||
[STARTTIME] = { .name = "STARTTIME", .title = "START ", .description = "Time the process was started", .flags = 0, },
|
[STARTTIME] = { .name = "STARTTIME", .title = "START ", .description = "Time the process was started", .flags = 0, },
|
||||||
|
@ -46,7 +46,7 @@ const ProcessFieldData Process_fields[LAST_PROCESSFIELD] = {
|
||||||
[TIME] = { .name = "TIME", .title = " TIME+ ", .description = "Total time the process has spent in user and system time", .flags = 0, .defaultSortDesc = true, },
|
[TIME] = { .name = "TIME", .title = " TIME+ ", .description = "Total time the process has spent in user and system time", .flags = 0, .defaultSortDesc = true, },
|
||||||
[NLWP] = { .name = "NLWP", .title = "NLWP ", .description = "Number of threads in the process", .flags = 0, },
|
[NLWP] = { .name = "NLWP", .title = "NLWP ", .description = "Number of threads in the process", .flags = 0, },
|
||||||
[TGID] = { .name = "TGID", .title = "TGID", .description = "Thread group ID (i.e. process ID)", .flags = 0, .pidColumn = true, },
|
[TGID] = { .name = "TGID", .title = "TGID", .description = "Thread group ID (i.e. process ID)", .flags = 0, .pidColumn = true, },
|
||||||
[ZONEID] = { .name = "ZONEID", .title = "ZONEID", .description = "Zone ID", .flags = 0, .pidColumn = true, },
|
[ZONEID] = { .name = "ZONEID", .title = "ZNID", .description = "Zone ID", .flags = 0, .pidColumn = true, },
|
||||||
[ZONE] = { .name = "ZONE", .title = "ZONE ", .description = "Zone name", .flags = 0, },
|
[ZONE] = { .name = "ZONE", .title = "ZONE ", .description = "Zone name", .flags = 0, },
|
||||||
[PROJID] = { .name = "PROJID", .title = "PRJID", .description = "Project ID", .flags = 0, .pidColumn = true, },
|
[PROJID] = { .name = "PROJID", .title = "PRJID", .description = "Project ID", .flags = 0, .pidColumn = true, },
|
||||||
[TASKID] = { .name = "TASKID", .title = "TSKID", .description = "Task ID", .flags = 0, .pidColumn = true, },
|
[TASKID] = { .name = "TASKID", .title = "TSKID", .description = "Task ID", .flags = 0, .pidColumn = true, },
|
||||||
|
@ -84,6 +84,7 @@ static void SolarisProcess_writeField(const Process* this, RichString* str, Proc
|
||||||
case ZONE: Process_printLeftAlignedField(str, attr, sp->zname ? sp->zname : "global", ZONENAME_MAX/4); return;
|
case ZONE: Process_printLeftAlignedField(str, attr, sp->zname ? sp->zname : "global", ZONENAME_MAX/4); return;
|
||||||
case PID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->realpid); break;
|
case PID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->realpid); break;
|
||||||
case PPID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->realppid); break;
|
case PPID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->realppid); break;
|
||||||
|
case TGID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->realtgid); break;
|
||||||
case LWPID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->lwpid); break;
|
case LWPID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->lwpid); break;
|
||||||
default:
|
default:
|
||||||
Process_writeField(this, str, field);
|
Process_writeField(this, str, field);
|
||||||
|
|
|
@ -29,6 +29,7 @@ typedef struct SolarisProcess_ {
|
||||||
bool is_lwp;
|
bool is_lwp;
|
||||||
pid_t realpid;
|
pid_t realpid;
|
||||||
pid_t realppid;
|
pid_t realppid;
|
||||||
|
pid_t realtgid;
|
||||||
pid_t lwpid;
|
pid_t lwpid;
|
||||||
} SolarisProcess;
|
} SolarisProcess;
|
||||||
|
|
||||||
|
|
|
@ -342,7 +342,17 @@ static int SolarisProcessList_walkproc(psinfo_t* _psinfo, lwpsinfo_t* _lwpsinfo,
|
||||||
proc->st_uid = _psinfo->pr_euid;
|
proc->st_uid = _psinfo->pr_euid;
|
||||||
proc->pgrp = _psinfo->pr_pgid;
|
proc->pgrp = _psinfo->pr_pgid;
|
||||||
proc->nlwp = _psinfo->pr_nlwp;
|
proc->nlwp = _psinfo->pr_nlwp;
|
||||||
|
proc->session = _psinfo->pr_sid;
|
||||||
|
|
||||||
proc->tty_nr = _psinfo->pr_ttydev;
|
proc->tty_nr = _psinfo->pr_ttydev;
|
||||||
|
const char* name = (_psinfo->pr_ttydev != PRNODEV) ? ttyname(_psinfo->pr_ttydev) : NULL;
|
||||||
|
if (!name) {
|
||||||
|
free(proc->tty_name);
|
||||||
|
proc->tty_name = NULL;
|
||||||
|
} else {
|
||||||
|
free_and_xStrdup(&proc->tty_name, name);
|
||||||
|
}
|
||||||
|
|
||||||
proc->m_resident = _psinfo->pr_rssize; // KB
|
proc->m_resident = _psinfo->pr_rssize; // KB
|
||||||
proc->m_virt = _psinfo->pr_size; // KB
|
proc->m_virt = _psinfo->pr_size; // KB
|
||||||
|
|
||||||
|
@ -361,6 +371,7 @@ static int SolarisProcessList_walkproc(psinfo_t* _psinfo, lwpsinfo_t* _lwpsinfo,
|
||||||
proc->ppid = (_psinfo->pr_ppid * 1024);
|
proc->ppid = (_psinfo->pr_ppid * 1024);
|
||||||
proc->tgid = (_psinfo->pr_ppid * 1024);
|
proc->tgid = (_psinfo->pr_ppid * 1024);
|
||||||
sproc->realppid = _psinfo->pr_ppid;
|
sproc->realppid = _psinfo->pr_ppid;
|
||||||
|
sproc->realtgid = _psinfo->pr_ppid;
|
||||||
// See note above (in common section) about this BINARY FRACTION
|
// See note above (in common section) about this BINARY FRACTION
|
||||||
proc->percent_cpu = ((uint16_t)_psinfo->pr_pctcpu / (double)32768) * (double)100.0;
|
proc->percent_cpu = ((uint16_t)_psinfo->pr_pctcpu / (double)32768) * (double)100.0;
|
||||||
proc->time = _psinfo->pr_time.tv_sec;
|
proc->time = _psinfo->pr_time.tv_sec;
|
||||||
|
@ -397,6 +408,7 @@ static int SolarisProcessList_walkproc(psinfo_t* _psinfo, lwpsinfo_t* _lwpsinfo,
|
||||||
proc->ppid = _psinfo->pr_pid * 1024;
|
proc->ppid = _psinfo->pr_pid * 1024;
|
||||||
proc->tgid = _psinfo->pr_pid * 1024;
|
proc->tgid = _psinfo->pr_pid * 1024;
|
||||||
sproc->realppid = _psinfo->pr_pid;
|
sproc->realppid = _psinfo->pr_pid;
|
||||||
|
sproc->realtgid = _psinfo->pr_pid;
|
||||||
proc->starttime_ctime = _lwpsinfo->pr_start.tv_sec;
|
proc->starttime_ctime = _lwpsinfo->pr_start.tv_sec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue