Do not use extra starttime process field on Linux

This commit is contained in:
Christian Göttsche
2020-10-12 12:51:18 +02:00
committed by cgzones
parent d744dac7ee
commit 783be7711d
3 changed files with 10 additions and 17 deletions

View File

@ -260,9 +260,8 @@ void ProcessList_delete(ProcessList* pl) {
free(this);
}
static double jiffy = NAN;
static inline unsigned long long LinuxProcess_adjustTime(unsigned long long t) {
static double jiffy = NAN;
if(isnan(jiffy)) {
errno = 0;
long sc_jiffy = sysconf(_SC_CLK_TCK);
@ -345,7 +344,11 @@ static bool LinuxProcessList_readStatFile(Process *process, const char* dirname,
process->nlwp = strtol(location, &location, 10);
location += 1;
location = strchr(location, ' ')+1;
lp->starttime = strtoll(location, &location, 10);
if (process->starttime_ctime == 0) {
process->starttime_ctime = btime + LinuxProcess_adjustTime(strtoll(location, &location, 10)) / 100;
} else {
location = strchr(location, ' ')+1;
}
location += 1;
for (int i=0; i<15; i++) location = strchr(location, ' ')+1;
process->exit_signal = strtol(location, &location, 10);
@ -1032,6 +1035,10 @@ static bool LinuxProcessList_recurseProcTree(LinuxProcessList* this, const char*
goto errorReadingProcess;
}
struct tm date;
(void) localtime_r(&proc->starttime_ctime, &date);
strftime(proc->starttime_show, 7, ((proc->starttime_ctime > tv.tv_sec - 86400) ? "%R " : "%b%d "), &date);
ProcessList_add(pl, proc);
} else {
if (settings->updateProcessNames && proc->state != 'Z') {