okra pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=cd24662e9fc2b7318b22bffb16d84ab84eea5451

commit cd24662e9fc2b7318b22bffb16d84ab84eea5451
Author: Stephen 'Okra' Houston <[email protected]>
Date:   Fri Jan 6 16:12:20 2017 -0600

    Enlightenment: Add the sysinfo gadget that includes battery, temp, 
frequency, cpu, mem, and net
    
    This is a gadget using the new api that has separate gadgets for battery, 
temperature, net status, cpu load, mem usage, cpu frequency, and one gadget 
called sysinfo that combines all of the above.
---
 src/modules/sysinfo/e-module-sysinfo.edj | Bin 0 -> 7340 bytes
 src/modules/sysinfo/mod.c                | 181 +++++++++++++++++++++++
 src/modules/sysinfo/module.desktop.in    |   7 +
 src/modules/sysinfo/sysinfo.c            | 129 +++++++++++++++++
 src/modules/sysinfo/sysinfo.h            | 238 +++++++++++++++++++++++++++++++
 5 files changed, 555 insertions(+)

diff --git a/src/modules/sysinfo/e-module-sysinfo.edj 
b/src/modules/sysinfo/e-module-sysinfo.edj
new file mode 100644
index 0000000..b861ae1
Binary files /dev/null and b/src/modules/sysinfo/e-module-sysinfo.edj differ
diff --git a/src/modules/sysinfo/mod.c b/src/modules/sysinfo/mod.c
new file mode 100644
index 0000000..dc13db1
--- /dev/null
+++ b/src/modules/sysinfo/mod.c
@@ -0,0 +1,181 @@
+#include "sysinfo.h"
+
+static E_Config_DD *conf_edd = NULL;
+static E_Config_DD *conf_item_edd = NULL;
+Eina_List *sysinfo_instances = NULL;
+E_Module *module = NULL;
+Config *sysinfo_config = NULL;
+
+EINTERN void
+sysinfo_init(void)
+{
+   conf_item_edd = E_CONFIG_DD_NEW("Sysinfo_Config_Item", Config_Item);
+#undef T
+#undef D
+#define T Config_Item
+#define D conf_item_edd
+   E_CONFIG_VAL(D, T, id, INT);
+   E_CONFIG_VAL(D, T, esm, INT);
+   E_CONFIG_VAL(D, T, batman.poll_interval, INT);
+   E_CONFIG_VAL(D, T, batman.alert, INT);
+   E_CONFIG_VAL(D, T, batman.alert_p, INT);
+   E_CONFIG_VAL(D, T, batman.alert_timeout, INT);
+   E_CONFIG_VAL(D, T, batman.suspend_below, INT);
+   E_CONFIG_VAL(D, T, batman.force_mode, INT);
+   #if defined HAVE_EEZE || defined __OpenBSD__ || defined __NetBSD__
+   E_CONFIG_VAL(D, T, batman.fuzzy, INT);
+#endif
+   E_CONFIG_VAL(D, T, batman.desktop_notifications, INT);
+   E_CONFIG_VAL(D, T, thermal.poll_interval, INT);
+   E_CONFIG_VAL(D, T, thermal.low, INT);
+   E_CONFIG_VAL(D, T, thermal.high, INT);
+   E_CONFIG_VAL(D, T, thermal.sensor_type, INT);
+   E_CONFIG_VAL(D, T, thermal.sensor_name, STR);
+   E_CONFIG_VAL(D, T, thermal.units, INT);
+   E_CONFIG_VAL(D, T, cpuclock.poll_interval, INT);
+   E_CONFIG_VAL(D, T, cpuclock.restore_governor, INT);
+   E_CONFIG_VAL(D, T, cpuclock.auto_powersave, INT);
+   E_CONFIG_VAL(D, T, cpuclock.powersave_governor, STR);
+   E_CONFIG_VAL(D, T, cpuclock.governor, STR);
+   E_CONFIG_VAL(D, T, cpuclock.pstate_min, INT);
+   E_CONFIG_VAL(D, T, cpuclock.pstate_max, INT);
+   E_CONFIG_VAL(D, T, cpumonitor.poll_interval, INT);
+   E_CONFIG_VAL(D, T, memusage.poll_interval, INT);
+   E_CONFIG_VAL(D, T, netstatus.poll_interval, INT);
+
+   conf_edd = E_CONFIG_DD_NEW("Sysinfo_Config", Config);
+#undef T
+#undef D
+#define T Config
+#define D conf_edd
+   E_CONFIG_LIST(D, T, items, conf_item_edd);
+
+   sysinfo_config = e_config_domain_load("module.sysinfo", conf_edd);
+
+   if (!sysinfo_config)
+     {
+        Config_Item *ci;
+
+        sysinfo_config = E_NEW(Config, 1);
+        ci = E_NEW(Config_Item, 1);
+        ci->id = 0;
+        ci->esm = E_SYSINFO_MODULE_NONE;
+
+        ci->batman.poll_interval = 512;
+        ci->batman.alert = 30;
+        ci->batman.alert_p = 10;
+        ci->batman.alert_timeout = 0;
+        ci->batman.suspend_below = 0;
+        ci->batman.force_mode = 0;
+        ci->batman.full = -2;
+        ci->batman.time_left = -2;
+        ci->batman.time_full = -2;
+        ci->batman.have_battery = -2;
+        ci->batman.have_power = -2;
+#if defined HAVE_EEZE || defined __OpenBSD__ || defined __NetBSD__
+        ci->batman.fuzzy = 0;
+#endif
+        ci->batman.desktop_notifications = 0;
+        ci->thermal.poll_interval = 128;
+        ci->thermal.low = 30;
+        ci->thermal.high = 80;
+        ci->thermal.sensor_type = SENSOR_TYPE_NONE;
+        ci->thermal.sensor_name = NULL;
+        ci->thermal.temp = -900;
+        ci->thermal.units = CELSIUS;
+        ci->cpuclock.poll_interval = 32;
+        ci->cpuclock.restore_governor = 0;
+        ci->cpuclock.auto_powersave = 1;
+        ci->cpuclock.powersave_governor = NULL;
+        ci->cpuclock.governor = NULL;
+        ci->cpuclock.pstate_min = 1;
+        ci->cpuclock.pstate_max = 101;
+        ci->cpumonitor.poll_interval = 32;
+        ci->cpumonitor.total = 0;
+        ci->cpumonitor.idle = 0;
+        ci->memusage.poll_interval = 32;
+        ci->netstatus.poll_interval = 32;
+        ci->netstatus.in = 0;
+        ci->netstatus.out = 0;
+
+        E_CONFIG_LIMIT(ci->batman.poll_interval, 4, 4096);
+        E_CONFIG_LIMIT(ci->batman.alert, 0, 60);
+        E_CONFIG_LIMIT(ci->batman.alert_p, 0, 100);
+        E_CONFIG_LIMIT(ci->batman.alert_timeout, 0, 300);
+        E_CONFIG_LIMIT(ci->batman.suspend_below, 0, 50);
+        E_CONFIG_LIMIT(ci->batman.force_mode, 0, 2);
+        E_CONFIG_LIMIT(ci->batman.desktop_notifications, 0, 1);
+        E_CONFIG_LIMIT(ci->thermal.poll_interval, 1, 1024);
+        E_CONFIG_LIMIT(ci->thermal.low, 0, 100);
+        E_CONFIG_LIMIT(ci->thermal.high, 0, 220);
+        E_CONFIG_LIMIT(ci->thermal.units, CELSIUS, FAHRENHEIT);
+        E_CONFIG_LIMIT(ci->cpuclock.poll_interval, 1, 1024);
+        E_CONFIG_LIMIT(ci->cpumonitor.poll_interval, 1, 1024);
+        E_CONFIG_LIMIT(ci->memusage.poll_interval, 1, 1024);
+        E_CONFIG_LIMIT(ci->netstatus.poll_interval, 1, 1024);
+
+        sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
+     }
+   e_gadget_type_add("Batman", batman_create, NULL);
+   e_gadget_type_add("Thermal", thermal_create, NULL);
+   e_gadget_type_add("CpuClock", cpuclock_create, NULL);
+   e_gadget_type_add("CpuMonitor", cpumonitor_create, NULL);
+   e_gadget_type_add("MemUsage", memusage_create, NULL);
+   e_gadget_type_add("NetStatus", netstatus_create, NULL);
+   e_gadget_type_add("SysInfo", sysinfo_create, NULL);
+}
+
+EINTERN void
+sysinfo_shutdown(void)
+{
+   if (sysinfo_config)
+     {
+        Config_Item *ci;
+        EINA_LIST_FREE(sysinfo_config->items, ci)
+          {
+             free(ci);
+          }
+        E_FREE(sysinfo_config);
+     }
+   E_CONFIG_DD_FREE(conf_edd);
+   E_CONFIG_DD_FREE(conf_item_edd);
+
+   e_gadget_type_del("Batman");
+   e_gadget_type_del("Thermal");
+   e_gadget_type_del("CpuClock");
+   e_gadget_type_del("CpuMonitor");
+   e_gadget_type_del("MemUsage");
+   e_gadget_type_del("NetStatus");
+   e_gadget_type_del("SysInfo");
+}
+
+E_API E_Module_Api e_modapi =
+{
+   E_MODULE_API_VERSION,
+   "Sysinfo"
+};
+
+E_API void *
+e_modapi_init(E_Module *m)
+{
+   sysinfo_init();
+
+   module = m;
+   sysinfo_config->module = m;
+   return m;
+}
+
+E_API int
+e_modapi_shutdown(E_Module *m EINA_UNUSED)
+{
+   sysinfo_shutdown();
+   return 1;
+}
+
+E_API int
+e_modapi_save(E_Module *m EINA_UNUSED)
+{
+   e_config_domain_save("module.sysinfo", conf_edd, sysinfo_config);
+   return 1;
+}
+
diff --git a/src/modules/sysinfo/module.desktop.in 
b/src/modules/sysinfo/module.desktop.in
new file mode 100644
index 0000000..b3a69d9
--- /dev/null
+++ b/src/modules/sysinfo/module.desktop.in
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=Link
+Name=Sysinfo
+Comment=A gadget to visualize your system info
+Icon=e-module-sysinfo
+X-Enlightenment-ModuleType=system
diff --git a/src/modules/sysinfo/sysinfo.c b/src/modules/sysinfo/sysinfo.c
new file mode 100644
index 0000000..4da8a39
--- /dev/null
+++ b/src/modules/sysinfo/sysinfo.c
@@ -0,0 +1,129 @@
+#include "sysinfo.h"
+
+static void
+_sysinfo_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
+{
+   Instance *inst = data;
+
+   if (inst->o_main != event_data) return;
+
+   sysinfo_batman_remove(inst);
+   sysinfo_thermal_remove(inst);
+   sysinfo_cpuclock_remove(inst);
+   sysinfo_cpumonitor_remove(inst);
+   sysinfo_memusage_remove(inst);
+   sysinfo_netstatus_remove(inst);
+
+   sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
+   E_FREE(inst->cfg);
+}
+
+static void
+_sysinfo_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
+{
+   Instance *inst = data;
+
+   inst->cfg->sysinfo.o_batman = sysinfo_batman_create(inst->o_main, inst);
+   elm_table_pack(inst->o_main, inst->cfg->sysinfo.o_batman, 0, 0, 1, 1);
+   inst->cfg->sysinfo.o_thermal = sysinfo_thermal_create(inst->o_main, inst);
+   elm_table_pack(inst->o_main, inst->cfg->sysinfo.o_thermal, 1, 0, 1, 1);
+   inst->cfg->sysinfo.o_cpuclock = sysinfo_cpuclock_create(inst->o_main, inst);
+   elm_table_pack(inst->o_main, inst->cfg->sysinfo.o_cpuclock, 0, 1, 1, 1);
+   inst->cfg->sysinfo.o_cpumonitor = sysinfo_cpumonitor_create(inst->o_main, 
inst);
+   elm_table_pack(inst->o_main, inst->cfg->sysinfo.o_cpumonitor, 1, 1, 1, 1);
+   inst->cfg->sysinfo.o_memusage = sysinfo_memusage_create(inst->o_main, inst);
+   elm_table_pack(inst->o_main, inst->cfg->sysinfo.o_memusage, 0, 2, 1, 1);
+   inst->cfg->sysinfo.o_netstatus = sysinfo_netstatus_create(inst->o_main, 
inst);
+   elm_table_pack(inst->o_main, inst->cfg->sysinfo.o_netstatus, 1, 2, 1, 1);
+
+   E_EXPAND(inst->o_main);
+   E_FILL(inst->o_main);
+
+   evas_object_smart_callback_del_full(obj, "gadget_created", 
_sysinfo_created_cb, data);
+}
+
+static Config_Item *
+_conf_item_get(int *id)
+{
+   Config_Item *ci;
+   Eina_List *l;
+
+   if (*id > 0)
+     {
+        EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
+          if (*id == ci->id && ci->esm == E_SYSINFO_MODULE_SYSINFO) return ci;
+     }
+
+   ci = E_NEW(Config_Item, 1);
+
+   if (*id != -1)
+     ci->id = eina_list_count(sysinfo_config->items)+1;
+   else
+     ci->id = -1;
+
+   ci->esm = E_SYSINFO_MODULE_SYSINFO;
+   ci->batman.poll_interval = 512;
+   ci->batman.alert = 30;
+   ci->batman.alert_p = 10;
+   ci->batman.alert_timeout = 0;
+   ci->batman.suspend_below = 0;
+   ci->batman.force_mode = 0;
+   ci->batman.full = -2;
+   ci->batman.time_left = -2;
+   ci->batman.time_full = -2;
+   ci->batman.have_battery = -2;
+   ci->batman.have_power = -2;
+#if defined HAVE_EEZE || defined __OpenBSD__ || defined __NetBSD__
+   ci->batman.fuzzy = 0;
+#endif
+   ci->batman.desktop_notifications = 0;
+   ci->thermal.poll_interval = 128;
+   ci->thermal.low = 30;
+   ci->thermal.high = 80;
+   ci->thermal.sensor_type = SENSOR_TYPE_NONE;
+   ci->thermal.sensor_name = NULL;
+   ci->thermal.units = CELSIUS;
+   ci->cpuclock.poll_interval = 32;
+   ci->cpuclock.restore_governor = 0;
+   ci->cpuclock.auto_powersave = 1;
+   ci->cpuclock.powersave_governor = NULL;
+   ci->cpuclock.governor = NULL;
+   ci->cpuclock.pstate_min = 1;
+   ci->cpuclock.pstate_max = 101;
+   ci->cpumonitor.poll_interval = 32;
+   ci->cpumonitor.total = 0;
+   ci->cpumonitor.idle = 0;
+   ci->memusage.poll_interval = 32;
+   ci->netstatus.poll_interval = 32;
+   ci->netstatus.in = 0;
+   ci->netstatus.out = 0;
+
+   sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
+
+   return ci;
+}
+
+Evas_Object *
+sysinfo_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient 
EINA_UNUSED)
+{
+   Instance *inst;
+
+   inst = E_NEW(Instance, 1);
+   inst->cfg = _conf_item_get(id);
+   *id = inst->cfg->id;
+   inst->o_main = elm_table_add(parent);
+   elm_table_homogeneous_set(inst->o_main, EINA_TRUE);
+   E_EXPAND(inst->o_main);
+   evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, 1, 
1);
+   evas_object_smart_callback_add(parent, "gadget_created", 
_sysinfo_created_cb, inst);
+   evas_object_smart_callback_add(parent, "gadget_removed", 
_sysinfo_removed_cb, inst);
+   evas_object_show(inst->o_main);
+
+   if (inst->cfg->id < 0) return inst->o_main;
+
+   sysinfo_instances =
+     eina_list_append(sysinfo_instances, inst);
+
+   return inst->o_main;
+}
+
diff --git a/src/modules/sysinfo/sysinfo.h b/src/modules/sysinfo/sysinfo.h
new file mode 100644
index 0000000..a6191ba
--- /dev/null
+++ b/src/modules/sysinfo/sysinfo.h
@@ -0,0 +1,238 @@
+#ifndef SYSINFO_H
+#define SYSINFO_H
+
+#include "e.h"
+#ifdef HAVE_EEZE
+# include <Eeze.h>
+#else
+# include <Eldbus.h>
+#endif
+
+E_API extern E_Module_Api e_modapi;
+
+E_API void *e_modapi_init     (E_Module *m);
+E_API int   e_modapi_shutdown (E_Module *m);
+E_API int   e_modapi_save     (E_Module *m);
+
+typedef enum _E_Sysinfo_Module E_Sysinfo_Module;
+enum _E_Sysinfo_Module
+{
+   E_SYSINFO_MODULE_NONE = 0,
+   E_SYSINFO_MODULE_BATMAN ,
+   E_SYSINFO_MODULE_THERMAL,
+   E_SYSINFO_MODULE_CPUCLOCK,
+   E_SYSINFO_MODULE_CPUMONITOR,
+   E_SYSINFO_MODULE_MEMUSAGE,
+   E_SYSINFO_MODULE_NETSTATUS,
+   E_SYSINFO_MODULE_SYSINFO
+};
+
+typedef enum _Sensor_Type
+{
+   SENSOR_TYPE_NONE,
+#if defined __FreeBSD__ || defined __OpenBSD__ || defined __DragonflyBSD__
+   SENSOR_TYPE_FREEBSD,
+   SENSOR_TYPE_OPENBSD,
+#else
+   SENSOR_TYPE_OMNIBOOK,
+   SENSOR_TYPE_LINUX_MACMINI,
+   SENSOR_TYPE_LINUX_I2C,
+   SENSOR_TYPE_LINUX_ACPI,
+   SENSOR_TYPE_LINUX_PCI,
+   SENSOR_TYPE_LINUX_PBOOK,
+   SENSOR_TYPE_LINUX_INTELCORETEMP,
+   SENSOR_TYPE_LINUX_THINKPAD,
+   SENSOR_TYPE_LINUX_SYS
+#endif
+} Sensor_Type;
+
+typedef enum _Unit
+{
+   CELSIUS,
+   FAHRENHEIT
+} Unit;
+
+typedef struct _Tempthread Tempthread;
+typedef struct _Cpu_Status       Cpu_Status;
+typedef struct _Config Config;
+typedef struct _Config_Item Config_Item;
+typedef struct _Instance Instance;
+
+struct _Tempthread
+{
+   Instance *inst;
+   int poll_interval;
+   Sensor_Type sensor_type;
+   const char *sensor_name;
+   const char *sensor_path;
+   void *extn;
+#ifdef HAVE_EEZE
+   Eina_List *tempdevs;
+#endif
+   Eina_Bool initted : 1;
+};
+
+struct _Cpu_Status
+{
+   Eina_List     *frequencies;
+   Eina_List     *governors;
+   int            cur_frequency;
+#ifdef __OpenBSD__
+   int            cur_percent;
+#endif
+   int            cur_min_frequency;
+   int            cur_max_frequency;
+   int            can_set_frequency;
+   int            pstate_min;
+   int            pstate_max;
+   char          *cur_governor;
+   const char    *orig_governor;
+   unsigned char  active;
+   unsigned char  pstate;
+   unsigned char  pstate_turbo;
+};
+
+struct _Config
+{
+   Eina_List *items;
+
+   E_Module    *module;
+   Evas_Object *config_dialog;
+};
+
+struct _Config_Item
+{
+   int                     id;
+   E_Sysinfo_Module        esm;
+   struct
+   {
+      Evas_Object         *o_gadget;
+      /* saved * loaded config values */
+      int                  poll_interval;
+      int                  alert;      /* Alert on minutes remaining */
+      int                  alert_p;    /* Alert on percentage remaining */
+      int                  alert_timeout;  /* Popup dismissal timeout */
+      int                  suspend_below;  /* Suspend if battery drops below 
this level */
+      int                  suspend_method; /* Method used to suspend the 
machine */
+      int                  force_mode; /* force use of batget or hal */
+      /* just config state */
+      Ecore_Exe           *batget_exe;
+      Ecore_Event_Handler *batget_data_handler;
+      Ecore_Event_Handler *batget_del_handler;
+      Ecore_Timer         *alert_timer;
+      int                  full;
+      int                  time_left;
+      int                  time_full;
+      int                  have_battery;
+      int                  have_power;
+      int                  desktop_notifications;
+#ifdef HAVE_EEZE
+      Eeze_Udev_Watch     *acwatch;
+      Eeze_Udev_Watch     *batwatch;
+#endif
+#if defined HAVE_EEZE || defined __OpenBSD__ || defined __NetBSD__
+      Eina_Bool            fuzzy;
+      int                  fuzzcount;
+#endif
+   } batman;
+   struct
+   {
+      Evas_Object         *o_gadget;
+      int                  poll_interval;
+      int                  low, high;
+      int                  sensor_type;
+      int                  temp;
+      const char          *sensor_name;
+      Unit                 units;
+#ifdef HAVE_EEZE
+      Ecore_Poller        *poller;
+      Tempthread          *tth;
+#endif
+      Ecore_Thread        *th;
+
+      Eina_Bool            have_temp:1;
+   } thermal;
+   struct
+   {
+      Evas_Object         *o_gadget;
+      int                  poll_interval;
+      int                  restore_governor;
+      int                  auto_powersave;
+      const char          *powersave_governor;
+      const char          *governor;
+      int                  pstate_min;
+      int                  pstate_max;
+      Cpu_Status          *status;
+      Ecore_Thread        *frequency_check_thread;
+      Ecore_Event_Handler *handler;
+   } cpuclock;
+   struct
+   {
+      Evas_Object         *o_gadget;
+      int                  poll_interval;
+      long                 total;
+      long                 idle;
+      Ecore_Thread        *usage_check_thread;
+   } cpumonitor;
+   struct
+   {
+      Evas_Object         *o_gadget;
+      int                  poll_interval;
+      Ecore_Thread        *usage_check_thread;
+   } memusage;
+   struct
+   {
+      Evas_Object         *o_gadget;
+      int                  poll_interval;
+      long                 in;
+      long                 out;
+      Ecore_Thread        *usage_check_thread;
+   } netstatus;
+   struct   {
+      Evas_Object *o_batman;
+      Evas_Object *o_thermal;
+      Evas_Object *o_cpuclock;
+      Evas_Object *o_cpumonitor;
+      Evas_Object *o_memusage;
+      Evas_Object *o_netstatus;
+   } sysinfo;
+};
+
+struct _Instance
+{
+   Evas_Object         *o_main;
+   Evas_Object         *popup_battery;
+   Evas_Object         *warning;
+   Config_Item         *cfg;
+   unsigned int         notification_id;
+};
+
+EINTERN Evas_Object *config_sysinfo(E_Zone *zone, Instance *inst, 
E_Sysinfo_Module esm);
+EINTERN Evas_Object *batman_create(Evas_Object *parent, int *id, 
E_Gadget_Site_Orient orient);
+EINTERN Evas_Object *thermal_create(Evas_Object *parent, int *id, 
E_Gadget_Site_Orient orient);
+EINTERN Evas_Object *cpuclock_create(Evas_Object *parent, int *id, 
E_Gadget_Site_Orient orient);
+EINTERN Evas_Object *cpumonitor_create(Evas_Object *parent, int *id, 
E_Gadget_Site_Orient orient);
+EINTERN Evas_Object *memusage_create(Evas_Object *parent, int *id, 
E_Gadget_Site_Orient orient);
+EINTERN Evas_Object *netstatus_create(Evas_Object *parent, int *id, 
E_Gadget_Site_Orient orient);
+EINTERN Evas_Object *sysinfo_create(Evas_Object *parent, int *id, 
E_Gadget_Site_Orient orient);
+
+EINTERN Evas_Object *config_sysinfo(E_Zone *zone, Instance *inst, 
E_Sysinfo_Module esm);
+EINTERN Evas_Object *sysinfo_batman_create(Evas_Object *parent, Instance 
*inst);
+EINTERN Evas_Object *sysinfo_thermal_create(Evas_Object *parent, Instance 
*inst);
+EINTERN Evas_Object *sysinfo_cpuclock_create(Evas_Object *parent, Instance 
*inst);
+EINTERN Evas_Object *sysinfo_cpumonitor_create(Evas_Object *parent, Instance 
*inst);
+EINTERN Evas_Object *sysinfo_memusage_create(Evas_Object *parent, Instance 
*inst);
+EINTERN Evas_Object *sysinfo_netstatus_create(Evas_Object *parent, Instance 
*inst);
+
+EINTERN void sysinfo_batman_remove(Instance *inst);
+EINTERN void sysinfo_thermal_remove(Instance *inst);
+EINTERN void sysinfo_cpuclock_remove(Instance *inst);
+EINTERN void sysinfo_cpumonitor_remove(Instance *inst);
+EINTERN void sysinfo_memusage_remove(Instance *inst);
+EINTERN void sysinfo_netstatus_remove(Instance *inst);
+
+extern Config *sysinfo_config;
+extern Eina_List *sysinfo_instances;
+extern E_Module *module;
+
+#endif

-- 


Reply via email to