From a63cfc8b7c172aa7e849521a479d39af737681a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Tue, 13 Oct 2020 14:26:40 +0200 Subject: Refactor generating starttime string into Process class --- darwin/DarwinProcess.c | 14 ++++---------- darwin/DarwinProcess.h | 4 +--- darwin/DarwinProcessList.c | 5 +---- 3 files changed, 6 insertions(+), 17 deletions(-) (limited to 'darwin') diff --git a/darwin/DarwinProcess.c b/darwin/DarwinProcess.c index 8c90c2a5..48574e2f 100644 --- a/darwin/DarwinProcess.c +++ b/darwin/DarwinProcess.c @@ -50,14 +50,6 @@ bool Process_isThread(const Process* this) { return false; } -void DarwinProcess_setStartTime(Process *proc, struct extern_proc *ep, time_t now) { - struct tm date; - - proc->starttime_ctime = ep->p_starttime.tv_sec; - (void) localtime_r(&proc->starttime_ctime, &date); - strftime(proc->starttime_show, 7, ((proc->starttime_ctime > now - 86400) ? "%R " : "%b%d "), &date); -} - char *DarwinProcess_getCmdLine(struct kinfo_proc* k, int* basenameOffset) { /* This function is from the old Mac version of htop. Originally from ps? */ int mib[3], argmax, nargs, c = 0; @@ -201,7 +193,7 @@ ERROR_A: return retval; } -void DarwinProcess_setFromKInfoProc(Process *proc, struct kinfo_proc *ps, time_t now, bool exists) { +void DarwinProcess_setFromKInfoProc(Process *proc, struct kinfo_proc *ps, bool exists) { struct extern_proc *ep = &ps->kp_proc; /* UNSET HERE : @@ -231,7 +223,9 @@ void DarwinProcess_setFromKInfoProc(Process *proc, struct kinfo_proc *ps, time_t /* e_tdev == -1 for "no device" */ proc->tty_nr = ps->kp_eproc.e_tdev & 0xff; /* TODO tty_nr is unsigned */ - DarwinProcess_setStartTime(proc, ep, now); + proc->starttime_ctime = ep->p_starttime.tv_sec; + Process_fillStarttimeBuffer(proc); + proc->comm = DarwinProcess_getCmdLine(ps, &(proc->basenameOffset)); } diff --git a/darwin/DarwinProcess.h b/darwin/DarwinProcess.h index fc932afe..69a1d63b 100644 --- a/darwin/DarwinProcess.h +++ b/darwin/DarwinProcess.h @@ -28,11 +28,9 @@ void Process_delete(Object* cast); bool Process_isThread(const Process* this); -void DarwinProcess_setStartTime(Process *proc, struct extern_proc *ep, time_t now); - char *DarwinProcess_getCmdLine(struct kinfo_proc* k, int* basenameOffset); -void DarwinProcess_setFromKInfoProc(Process *proc, struct kinfo_proc *ps, time_t now, bool exists); +void DarwinProcess_setFromKInfoProc(Process *proc, struct kinfo_proc *ps, bool exists); void DarwinProcess_setFromLibprocPidinfo(DarwinProcess *proc, DarwinProcessList *dpl); diff --git a/darwin/DarwinProcessList.c b/darwin/DarwinProcessList.c index ad848877..10d0697f 100644 --- a/darwin/DarwinProcessList.c +++ b/darwin/DarwinProcessList.c @@ -150,9 +150,6 @@ void ProcessList_goThroughEntries(ProcessList* super) { struct kinfo_proc *ps; size_t count; DarwinProcess *proc; - struct timeval tv; - - gettimeofday(&tv, NULL); /* Start processing time */ /* Update the global data (CPU times and VM stats) */ ProcessList_freeCPULoadInfo(&dpl->prev_load); @@ -187,7 +184,7 @@ void ProcessList_goThroughEntries(ProcessList* super) { for(size_t i = 0; i < count; ++i) { proc = (DarwinProcess *)ProcessList_getProcess(super, ps[i].kp_proc.p_pid, &preExisting, (Process_New)DarwinProcess_new); - DarwinProcess_setFromKInfoProc(&proc->super, &ps[i], tv.tv_sec, preExisting); + DarwinProcess_setFromKInfoProc(&proc->super, &ps[i], preExisting); DarwinProcess_setFromLibprocPidinfo(proc, dpl); // Disabled for High Sierra due to bug in macOS High Sierra -- cgit v1.2.3