Refactoring and fixing stuff.

This commit is contained in:
Alastair Poole 2018-10-02 15:38:06 +01:00
parent f5a1292c39
commit 45b3dcfa87
10 changed files with 154 additions and 142 deletions

View File

@ -6,6 +6,10 @@ This is a process monitor and system monitor.
Currently have full engines for Linux, FreeBSD, OpenBSD and MacOS. Currently have full engines for Linux, FreeBSD, OpenBSD and MacOS.
The plan is to rewrite the whole program to log system information
over time to disk so we can do nice things with E and displaying
system information (not duplicating loads of code).
REQUIREMENTS: REQUIREMENTS:
An installation of EFL (v1.19.0+). Remember to set your PKG_CONFIG_PATH environment An installation of EFL (v1.19.0+). Remember to set your PKG_CONFIG_PATH environment

View File

@ -265,3 +265,4 @@ disks_get(void)
return NULL; return NULL;
#endif #endif
} }

View File

@ -13,5 +13,4 @@ disk_mount_point_get(const char *path);
Eina_List * Eina_List *
disks_get(void); disks_get(void);
#endif #endif

View File

@ -155,7 +155,11 @@ _sysctlfromname(const char *name, void *mib, int depth, size_t *len)
static int static int
cpu_count(void) cpu_count(void)
{ {
int cores = 0; static int cores = 0;
if (cores != 0)
return cores;
#if defined(__linux__) #if defined(__linux__)
char buf[4096]; char buf[4096];
FILE *f; FILE *f;
@ -1124,7 +1128,6 @@ system_power_state_get(power_t *power)
_power_state_get(power); _power_state_get(power);
} }
bool bool
system_network_transfer_get(unsigned long *incoming, unsigned long *outgoing) system_network_transfer_get(unsigned long *incoming, unsigned long *outgoing)
{ {
@ -1176,13 +1179,14 @@ system_cpu_memory_get(double *percent_cpu, long *memory_total, long *memory_used
return results.cpu_count; return results.cpu_count;
} }
static void *_network_transfer_get_thread_cb(void *arg) static void *
_network_transfer_get_thread_cb(void *arg)
{ {
results_t *results = arg; results_t *results = arg;
_network_transfer_get(results); _network_transfer_get(results);
return ((void *) 0); return (void *)0;
} }
void void
@ -1214,4 +1218,3 @@ system_stats_all_get(results_t *results)
} }
} }

View File

@ -251,9 +251,11 @@ _data_unit_symbol_get(Data_Unit unit)
case DATA_UNIT_KB: case DATA_UNIT_KB:
symbol = "K"; symbol = "K";
break; break;
case DATA_UNIT_MB: case DATA_UNIT_MB:
symbol = "M"; symbol = "M";
break; break;
case DATA_UNIT_GB: case DATA_UNIT_GB:
symbol = "G"; symbol = "G";
break; break;
@ -265,13 +267,13 @@ _data_unit_symbol_get(Data_Unit unit)
static void static void
_fields_append(Ui *ui, Proc_Stats *proc) _fields_append(Ui *ui, Proc_Stats *proc)
{ {
const char *format; const char *symbol;
int64_t mem_size, mem_rss; int64_t mem_size, mem_rss;
if (ui->program_pid == proc->pid) if (ui->program_pid == proc->pid)
return; return;
format = _data_unit_symbol_get(ui->data_unit); symbol = _data_unit_symbol_get(ui->data_unit);
mem_size = proc->mem_size; mem_size = proc->mem_size;
mem_rss = proc->mem_rss; mem_rss = proc->mem_rss;
@ -284,7 +286,7 @@ _fields_append(Ui *ui, Proc_Stats *proc)
else if (ui->data_unit == DATA_UNIT_MB) else if (ui->data_unit == DATA_UNIT_MB)
{ {
mem_size >>= 20; mem_size >>= 20;
mem_rss >>= 10; mem_rss >>= 20;
} }
else else
{ {
@ -294,8 +296,8 @@ _fields_append(Ui *ui, Proc_Stats *proc)
eina_strlcat(ui->fields[PROCESS_INFO_FIELD_PID], eina_slstr_printf("<link>%d</link> <br>", proc->pid), TEXT_FIELD_MAX); eina_strlcat(ui->fields[PROCESS_INFO_FIELD_PID], eina_slstr_printf("<link>%d</link> <br>", proc->pid), TEXT_FIELD_MAX);
eina_strlcat(ui->fields[PROCESS_INFO_FIELD_UID], eina_slstr_printf("%d <br>", proc->uid), TEXT_FIELD_MAX); eina_strlcat(ui->fields[PROCESS_INFO_FIELD_UID], eina_slstr_printf("%d <br>", proc->uid), TEXT_FIELD_MAX);
eina_strlcat(ui->fields[PROCESS_INFO_FIELD_SIZE], eina_slstr_printf("%lld %c<br>", mem_size, *format), TEXT_FIELD_MAX); eina_strlcat(ui->fields[PROCESS_INFO_FIELD_SIZE], eina_slstr_printf("%lld %c<br>", mem_size, *symbol), TEXT_FIELD_MAX);
eina_strlcat(ui->fields[PROCESS_INFO_FIELD_RSS], eina_slstr_printf("%lld %c<br>", mem_rss, *format), TEXT_FIELD_MAX); eina_strlcat(ui->fields[PROCESS_INFO_FIELD_RSS], eina_slstr_printf("%lld %c<br>", mem_rss, *symbol), TEXT_FIELD_MAX);
eina_strlcat(ui->fields[PROCESS_INFO_FIELD_COMMAND], eina_slstr_printf("%s<br>", proc->command), TEXT_FIELD_MAX); eina_strlcat(ui->fields[PROCESS_INFO_FIELD_COMMAND], eina_slstr_printf("%s<br>", proc->command), TEXT_FIELD_MAX);
eina_strlcat(ui->fields[PROCESS_INFO_FIELD_STATE], eina_slstr_printf("%s <br>", proc->state), TEXT_FIELD_MAX); eina_strlcat(ui->fields[PROCESS_INFO_FIELD_STATE], eina_slstr_printf("%s <br>", proc->state), TEXT_FIELD_MAX);
eina_strlcat(ui->fields[PROCESS_INFO_FIELD_CPU_USAGE], eina_slstr_printf("%.1f%% <br>", proc->cpu_usage), TEXT_FIELD_MAX); eina_strlcat(ui->fields[PROCESS_INFO_FIELD_CPU_USAGE], eina_slstr_printf("%.1f%% <br>", proc->cpu_usage), TEXT_FIELD_MAX);
@ -534,7 +536,6 @@ _btn_uid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info E
elm_scroller_page_bring_in(ui->scroller, 0, 0); elm_scroller_page_bring_in(ui->scroller, 0, 0);
} }
static void static void
_btn_cpu_usage_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) _btn_cpu_usage_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
@ -628,18 +629,6 @@ _btn_quit_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
ui_shutdown(ui); ui_shutdown(ui);
} }
static void
_btn_about_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Ui *ui;
Evas_Object *win;
ui = data;
win = ui->win;
printf("(c) Copyright 2018. Alastair Poole <netstar@gmail.com>\n");
}
static void static void
_list_item_del_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) _list_item_del_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
@ -878,14 +867,15 @@ _disk_adjust(Data_Unit unit, unsigned long value)
{ {
if (unit == DATA_UNIT_KB) if (unit == DATA_UNIT_KB)
{ {
value <<= 10; value >>= 10;
} }
else if (unit == DATA_UNIT_MB) else if (unit == DATA_UNIT_MB)
{ {
value >>= 20;
} }
else if (unit == DATA_UNIT_GB) else if (unit == DATA_UNIT_GB)
{ {
value >>= 10; value >>= 30;
} }
return value; return value;
@ -895,7 +885,7 @@ static void
_ui_disk_add(Ui *ui, const char *path, const char *mount, unsigned long total, unsigned long used) _ui_disk_add(Ui *ui, const char *path, const char *mount, unsigned long total, unsigned long used)
{ {
Evas_Object *frame, *progress; Evas_Object *frame, *progress;
const char *format; const char *symbol;
double ratio, value; double ratio, value;
frame = elm_frame_add(ui->disk_activity); frame = elm_frame_add(ui->disk_activity);
@ -909,10 +899,13 @@ _ui_disk_add(Ui *ui, const char *path, const char *mount, unsigned long total, u
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_progressbar_span_size_set(progress, 1.0); elm_progressbar_span_size_set(progress, 1.0);
format = _data_unit_symbol_get(ui->data_unit); symbol = _data_unit_symbol_get(ui->data_unit);
elm_progressbar_unit_format_set(progress, elm_progressbar_unit_format_set(progress,
eina_slstr_printf("%lu%c of %lu%c", _disk_adjust(ui->data_unit, used), *format, _disk_adjust(ui->data_unit, total), *format)); eina_slstr_printf(
"%lu%c of %lu%c",
_disk_adjust(ui->data_unit, used), *symbol,
_disk_adjust(ui->data_unit, total), *symbol));
elm_object_content_set(frame, progress); elm_object_content_set(frame, progress);
@ -949,7 +942,6 @@ _disk_view_update(Ui *ui)
{ {
if (disk_usage_get(mount, &total, &used)) if (disk_usage_get(mount, &total, &used))
{ {
total >>= 20; used >>= 20;
_ui_disk_add(ui, path, mount, total, used); _ui_disk_add(ui, path, mount, total, used);
} }
free(mount); free(mount);
@ -1088,7 +1080,7 @@ static void
_memory_view_update(Ui *ui, results_t *results) _memory_view_update(Ui *ui, results_t *results)
{ {
Evas_Object *box, *frame, *progress; Evas_Object *box, *frame, *progress;
const char *format; const char *symbol;
double ratio, value; double ratio, value;
if (!ui->mem_visible) if (!ui->mem_visible)
@ -1096,7 +1088,7 @@ _memory_view_update(Ui *ui, results_t *results)
elm_box_clear(ui->mem_activity); elm_box_clear(ui->mem_activity);
format = _data_unit_symbol_get(ui->data_unit); symbol = _data_unit_symbol_get(ui->data_unit);
box = elm_box_add(ui->content); box = elm_box_add(ui->content);
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
@ -1113,7 +1105,11 @@ _memory_view_update(Ui *ui, results_t *results)
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_progressbar_span_size_set(progress, 1.0); elm_progressbar_span_size_set(progress, 1.0);
elm_progressbar_unit_format_set(progress, elm_progressbar_unit_format_set(progress,
eina_slstr_printf("%lu %c / %lu %c", _mem_adjust(ui->data_unit, results->memory.used), *format, _mem_adjust(ui->data_unit, results->memory.total), *format)); eina_slstr_printf(
"%lu %c / %lu %c",
_mem_adjust(ui->data_unit, results->memory.used), *symbol,
_mem_adjust(ui->data_unit, results->memory.total), *symbol));
ratio = results->memory.total / 100.0; ratio = results->memory.total / 100.0;
value = results->memory.used / ratio; value = results->memory.used / ratio;
elm_progressbar_value_set(progress, value / 100); elm_progressbar_value_set(progress, value / 100);
@ -1130,8 +1126,11 @@ _memory_view_update(Ui *ui, results_t *results)
evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_progressbar_span_size_set(progress, 1.0); elm_progressbar_span_size_set(progress, 1.0);
elm_progressbar_unit_format_set(progress, elm_progressbar_unit_format_set(progress, eina_slstr_printf(
eina_slstr_printf("%lu %c / %lu %c", _mem_adjust(ui->data_unit, results->memory.cached), *format, _mem_adjust(ui->data_unit, results->memory.total), *format)); "%lu %c / %lu %c",
_mem_adjust(ui->data_unit, results->memory.cached), *symbol,
_mem_adjust(ui->data_unit, results->memory.total), *symbol));
ratio = results->memory.total / 100.0; ratio = results->memory.total / 100.0;
value = results->memory.cached / ratio; value = results->memory.cached / ratio;
elm_progressbar_value_set(progress, value / 100); elm_progressbar_value_set(progress, value / 100);
@ -1149,7 +1148,11 @@ _memory_view_update(Ui *ui, results_t *results)
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_progressbar_span_size_set(progress, 1.0); elm_progressbar_span_size_set(progress, 1.0);
elm_progressbar_unit_format_set(progress, elm_progressbar_unit_format_set(progress,
eina_slstr_printf("%lu %c / %lu %c", _mem_adjust(ui->data_unit, results->memory.buffered), *format, _mem_adjust(ui->data_unit, results->memory.total), *format)); eina_slstr_printf(
"%lu %c / %lu %c",
_mem_adjust(ui->data_unit, results->memory.buffered), *symbol,
_mem_adjust(ui->data_unit, results->memory.total), *symbol));
ratio = results->memory.total / 100.0; ratio = results->memory.total / 100.0;
value = results->memory.buffered / ratio; value = results->memory.buffered / ratio;
elm_progressbar_value_set(progress, value / 100); elm_progressbar_value_set(progress, value / 100);
@ -1167,7 +1170,11 @@ _memory_view_update(Ui *ui, results_t *results)
evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_progressbar_span_size_set(progress, 1.0); elm_progressbar_span_size_set(progress, 1.0);
elm_progressbar_unit_format_set(progress, elm_progressbar_unit_format_set(progress,
eina_slstr_printf("%lu %c / %lu %c", _mem_adjust(ui->data_unit, results->memory.shared), *format, _mem_adjust(ui->data_unit, results->memory.total), *format)); eina_slstr_printf(
"%lu %c / %lu %c",
_mem_adjust(ui->data_unit, results->memory.shared), *symbol,
_mem_adjust(ui->data_unit, results->memory.total), *symbol));
ratio = results->memory.total / 100.0; ratio = results->memory.total / 100.0;
value = results->memory.shared / ratio; value = results->memory.shared / ratio;
elm_progressbar_value_set(progress, value / 100); elm_progressbar_value_set(progress, value / 100);

View File

@ -126,7 +126,6 @@ typedef struct Ui
Sort_Type sort_type; Sort_Type sort_type;
Eina_Bool sort_reverse; Eina_Bool sort_reverse;
Eina_Bool panel_visible; Eina_Bool panel_visible;
} Ui; } Ui;
Ui * Ui *
@ -135,5 +134,4 @@ ui_add(Evas_Object *win);
void void
ui_shutdown(Ui *ui); ui_shutdown(Ui *ui);
#endif #endif