From a76e5b54e6d240aac925779a7f32a03821776f8e Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Sun, 16 Aug 2020 13:49:06 +0100 Subject: [PATCH] process: Start time. We need this for something :) --- src/bin/system/process.c | 1 + src/bin/system/process.h | 1 + src/bin/ui/ui_process_view.c | 26 ++++++++++++++++++++++++++ src/bin/ui/ui_process_view.h | 1 + 4 files changed, 29 insertions(+) diff --git a/src/bin/system/process.c b/src/bin/system/process.c index b0f7009..0ed0a87 100644 --- a/src/bin/system/process.c +++ b/src/bin/system/process.c @@ -882,6 +882,7 @@ _proc_thread_info(struct kinfo_proc *kp, Eina_Bool is_thread) p->state = _process_state_name(kp->ki_stat); p->mem_virt = kp->ki_size; p->mem_rss = MEMSZ(kp->ki_rssize) * MEMSZ(pagesize); + p->start = kp->ki_start.tv_sec; p->mem_size = p->mem_virt; p->nice = kp->ki_nice - NZERO; p->priority = kp->ki_pri.pri_level - PZERO; diff --git a/src/bin/system/process.h b/src/bin/system/process.h index f61c69d..11b876c 100644 --- a/src/bin/system/process.h +++ b/src/bin/system/process.h @@ -35,6 +35,7 @@ typedef struct _Proc_Info int32_t numthreads; int64_t cpu_time; double cpu_usage; + int64_t start; uint64_t mem_size; uint64_t mem_virt; diff --git a/src/bin/ui/ui_process_view.c b/src/bin/ui/ui_process_view.c index 172f4fe..a2116b5 100644 --- a/src/bin/ui/ui_process_view.c +++ b/src/bin/ui/ui_process_view.c @@ -337,6 +337,20 @@ _win_title_set(Evas_Object *win, const char *fmt, const char *cmd, int pid) elm_win_title_set(win, eina_slstr_printf(fmt, cmd, pid)); } +static char * +_time_string(int64_t epoch) +{ + struct tm *info; + time_t rawtime; + char buf[256]; + + rawtime = (time_t) epoch; + info = localtime(&rawtime); + strftime(buf, sizeof(buf), "%F %T", info); + + return strdup(buf); +} + static Eina_Bool _proc_info_update(void *data) { @@ -403,6 +417,13 @@ _proc_info_update(void *data) evisum_size_format(proc->mem_shared)); #endif elm_object_text_set(ui->entry_pid_size, evisum_size_format(proc->mem_size)); + + char *t = _time_string(proc->start); + if (t) + { + elm_object_text_set(ui->entry_pid_started, t); + free(t); + } elm_object_text_set(ui->entry_pid_nice, eina_slstr_printf("%d", proc->nice)); elm_object_text_set(ui->entry_pid_pri, eina_slstr_printf("%d", proc->priority)); @@ -567,6 +588,11 @@ _process_tab_add(Evas_Object *parent, Ui_Process *ui) ui->entry_pid_virt = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); + label = _label_add(parent, _(" Start time:")); + elm_table_pack(table, label, 0, i, 1, 1); + ui->entry_pid_started = entry = _entry_add(parent); + elm_table_pack(table, entry, 1, i++, 1, 1); + label = _label_add(parent, _("Nice:")); elm_table_pack(table, label, 0, i, 1, 1); ui->entry_pid_nice = entry = _entry_add(parent); diff --git a/src/bin/ui/ui_process_view.h b/src/bin/ui/ui_process_view.h index 8121aec..ca5e102 100644 --- a/src/bin/ui/ui_process_view.h +++ b/src/bin/ui/ui_process_view.h @@ -33,6 +33,7 @@ typedef struct _Ui_Process { Evas_Object *entry_pid_rss; Evas_Object *entry_pid_shared; Evas_Object *entry_pid_size; + Evas_Object *entry_pid_started; Evas_Object *entry_pid_nice; Evas_Object *entry_pid_pri; Evas_Object *entry_pid_state;