#include <glib.h>
#include <gtk/gtk.h>
#include <signal.h>
#include "lininfo.h"
#include "support.h"
#include "lkmonitor.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
Go to the source code of this file.
Functions | |
void | update_mem () |
Update mem pane. | |
void | update_cpu () |
Update cpu pane. | |
void | update_cpu_mhz (void) |
Update mhz variable in cpu pane. | |
void | update_devs () |
Update devices pane. | |
void | update_settings () |
Update settings pane. | |
void | update_misc () |
Update misc pane. | |
Variables | |
GtkWidget * | window1 |
mem_info | mem |
cpu_info | cpu |
dev_info | devs |
settings_info | settings |
stats_info | stats |
acpi_info | acpi |
void update_cpu | ( | ) |
Update cpu pane.
Update gtk widgets for cpu panel This function updates labels to show recent values. Before, it calls to get_cpu_info to collect data
Definition at line 155 of file update.c.
References cpu_info::bogomips, cpu_info::cache, cpu, cpu_info::cpu_family, cpu_info::cpuid_level, cpu_info::flags, cpu_info::fpu, cpu_info::fpu_exception, get_cpu_info(), lookup_widget(), cpu_info::Mhz, cpu_info::model, cpu_info::model_name, cpu_info::processor, cpu_info::stepping, cpu_info::vendor_id, window1, and cpu_info::wp.
Referenced by main().
00156 { 00157 00158 get_cpu_info (&cpu); 00159 00160 GtkLabel *widget; 00161 00162 /*Not updated so, we don't need thread locking*/ 00163 00164 widget = GTK_LABEL( lookup_widget (window1, "lbl_processor")); 00165 gtk_label_set_text (widget, (gchar *) cpu.processor); 00166 00167 widget = GTK_LABEL( lookup_widget (window1, "lbl_vendor")); 00168 gtk_label_set_text (widget, (gchar *) cpu.vendor_id); 00169 00170 widget = GTK_LABEL( lookup_widget (window1, "lbl_family")); 00171 gtk_label_set_text (widget, (gchar *) cpu.cpu_family); 00172 00173 00174 widget = GTK_LABEL( lookup_widget (window1, "lbl_model")); 00175 gtk_label_set_text (widget, (gchar *) cpu.model); 00176 00177 widget = GTK_LABEL(lookup_widget (window1, "lbl_model_name")); 00178 gtk_label_set_text (widget, (gchar *) cpu.model_name); 00179 00180 widget = GTK_LABEL( lookup_widget (window1, "lbl_stepping")); 00181 gtk_label_set_text (widget, (gchar *) cpu.stepping); 00182 00183 widget = GTK_LABEL( lookup_widget (window1, "lbl_Mhz")); 00184 gtk_label_set_text (widget, (gchar *) cpu.Mhz); 00185 00186 widget = GTK_LABEL( lookup_widget (window1, "lbl_cache")); 00187 gtk_label_set_text (widget, (gchar *) cpu.cache); 00188 00189 widget = GTK_LABEL( lookup_widget (window1, "lbl_fpu")); 00190 gtk_label_set_text (widget, (gchar *) cpu.fpu); 00191 00192 widget = GTK_LABEL( lookup_widget (window1, "lbl_fpu_exception")); 00193 gtk_label_set_text (widget, (gchar *) cpu.fpu_exception); 00194 00195 widget = GTK_LABEL( lookup_widget (window1, "lbl_cpu_id_level")); 00196 gtk_label_set_text (widget, (gchar *) cpu.cpuid_level); 00197 00198 widget = GTK_LABEL( lookup_widget (window1, "lbl_wp")); 00199 gtk_label_set_text (widget, (gchar *) cpu.wp); 00200 00201 widget = GTK_LABEL( lookup_widget (window1, "lbl_bogomips")); 00202 gtk_label_set_text (widget, (gchar *) cpu.bogomips); 00203 00204 widget = GTK_LABEL( lookup_widget (window1, "lbl_flags")); 00205 gtk_label_set_text (widget, (gchar *) cpu.flags); 00206 00207 00208 }
void update_cpu_mhz | ( | void | ) |
Update mhz variable in cpu pane.
Update MHz label in cpu pane This is the only dynamic feature in cpu pane.
Definition at line 213 of file update.c.
References get_mhz_info(), lookup_widget(), and window1.
Referenced by refresh().
00214 { 00215 GtkLabel *mhz_label; 00216 char str[10]; 00217 00218 get_mhz_info(str); 00219 00220 gdk_threads_enter(); 00221 00222 mhz_label=GTK_LABEL(lookup_widget(window1,"lbl_Mhz")); 00223 gtk_label_set_text(mhz_label,str); 00224 00225 gdk_threads_leave(); 00226 }
void update_devs | ( | ) |
Update devices pane.
Update treeviews for devices pane This is called from a callback
Definition at line 231 of file update.c.
References dev_info::blocks, dev_info::characters, devs, get_devs_info(), lkmonitor_fill_tv(), lookup_widget(), and window1.
Referenced by main(), and on_btn_dev_load_clicked().
00232 { 00233 get_devs_info(&devs); 00234 00235 GtkListStore *model; 00236 GtkTreeView *gtv; 00237 GtkTreeIter iter; 00238 00239 /* IMPORTANT: 00240 We should not lock with gdk_threads_enter because this function is 00241 called from a callback and callbacks are already running inside a gdk 00242 lock. 00243 In addition, this function is called from main thread before the collector 00244 thread is created, so we don't need to prevent the access from the other 00245 thread. 00246 */ 00247 00248 /* We want the model of the GtkTreeView for char devices */ 00249 gtv=GTK_TREE_VIEW(lookup_widget(window1,"gtv_char")); 00250 model=GTK_LIST_STORE(gtk_tree_view_get_model(gtv)); 00251 00252 gtk_tree_view_set_model(gtv,NULL); 00253 gtk_list_store_clear(model); 00254 lkmonitor_fill_tv(model,gtv,iter,devs.characters->str); 00255 gtk_tree_view_set_model(gtv,GTK_TREE_MODEL(model)); 00256 00257 /* We want the model of the GtkTreeView for block devices */ 00258 gtv=GTK_TREE_VIEW(lookup_widget(window1,"gtv_block")); 00259 model=GTK_LIST_STORE(gtk_tree_view_get_model(gtv)); 00260 gtk_tree_view_set_model(gtv,NULL); 00261 gtk_list_store_clear(model); 00262 lkmonitor_fill_tv(model,gtv,iter,devs.blocks->str); 00263 gtk_tree_view_set_model(gtv,GTK_TREE_MODEL(model)); 00264 00265 }
void update_mem | ( | ) |
Update mem pane.
Update gtk widgets for memory panel This function updates labels, progress bar and other widgets to show the most recent values. Before, it calls to get_mem_info to collect data
Definition at line 55 of file update.c.
References mem_info::active, mem_info::buffers, mem_info::cached, mem_info::dirty, mem_info::free, get_mem_info(), mem_info::high_free, mem_info::high_total, mem_info::hugepages_free, mem_info::hugepages_size, mem_info::hugepages_total, mem_info::inactive, lookup_widget(), mem_info::low_free, mem_info::low_total, mem, mem_info::swap_cached, mem_info::swap_free, mem_info::swap_total, mem_info::total, and window1.
Referenced by refresh().
00056 { 00057 00058 GtkLabel *widget; 00059 GtkProgressBar *progreso; 00060 gfloat total, free; 00061 00062 get_mem_info (&mem); 00063 00064 //Get Gtk thread lock 00065 gdk_threads_enter(); 00066 00067 00068 widget = GTK_LABEL(lookup_widget (window1, "lbl_total")); 00069 gtk_label_set_text (widget, (gchar *) mem.total); 00070 00071 widget = GTK_LABEL( lookup_widget (window1, "lbl_free")); 00072 gtk_label_set_text (widget, (gchar *) mem.free); 00073 00074 widget = GTK_LABEL(lookup_widget (window1, "lbl_buffers")); 00075 gtk_label_set_text (widget, (gchar *) mem.buffers); 00076 00077 widget = GTK_LABEL( lookup_widget (window1, "lbl_cached")); 00078 gtk_label_set_text (widget, (gchar *) mem.cached); 00079 00080 widget = GTK_LABEL( lookup_widget (window1, "lbl_swap_cached")); 00081 gtk_label_set_text (widget, (gchar *) mem.swap_cached); 00082 00083 widget = GTK_LABEL( lookup_widget (window1, "lbl_active")); 00084 gtk_label_set_text (widget, (gchar *) mem.active); 00085 00086 widget = GTK_LABEL( lookup_widget (window1, "lbl_inactive")); 00087 gtk_label_set_text (widget, (gchar *) mem.inactive); 00088 00089 widget = GTK_LABEL( lookup_widget (window1, "lbl_dirty")); 00090 gtk_label_set_text (widget, (gchar *) mem.dirty); 00091 00092 widget = GTK_LABEL( lookup_widget (window1, "lbl_hp_total")); 00093 gtk_label_set_text (widget, (gchar *) mem.hugepages_total); 00094 00095 widget = GTK_LABEL( lookup_widget (window1, "lbl_hp_free")); 00096 gtk_label_set_text (widget, (gchar *) mem.hugepages_free); 00097 00098 widget = GTK_LABEL( lookup_widget (window1, "lbl_hp_size")); 00099 gtk_label_set_text (widget, (gchar *) mem.hugepages_size); 00100 00101 widget = GTK_LABEL( lookup_widget (window1, "lbl_high_total")); 00102 gtk_label_set_text (widget, (gchar *) mem.high_total); 00103 00104 widget = GTK_LABEL( lookup_widget (window1, "lbl_high_free")); 00105 gtk_label_set_text (widget, (gchar *) mem.high_free); 00106 00107 widget = GTK_LABEL( lookup_widget (window1, "lbl_low_total")); 00108 gtk_label_set_text (widget, (gchar *) mem.low_total); 00109 00110 00111 widget = GTK_LABEL( lookup_widget (window1, "lbl_low_free")); 00112 gtk_label_set_text (widget, (gchar *) mem.low_free); 00113 00114 widget = GTK_LABEL( lookup_widget (window1, "lbl_swap_total")); 00115 gtk_label_set_text (widget, (gchar *) mem.swap_total); 00116 00117 widget = GTK_LABEL( lookup_widget (window1, "lbl_swap_free")); 00118 gtk_label_set_text (widget, (gchar *) mem.swap_free); 00119 00120 /*Compute percentage of memory use*/ 00121 total = atoi (strtok (mem.total, " ")); 00122 free = atoi (strtok (mem.free, " ")); 00123 00124 g_assert(total!=0); 00125 00126 progreso = GTK_PROGRESS_BAR(lookup_widget (window1, "pb_mem")); 00127 gtk_progress_bar_set_fraction (progreso, 00128 (gfloat) CLAMP(((total - free) / total),0,1)); 00129 00130 00131 /*Compute percentage of swap use. Reuse variables.*/ 00132 00133 00134 total = atoi (strtok (mem.swap_total, " ")); 00135 free = atoi (strtok (mem.swap_free, " ")); 00136 00137 progreso = GTK_PROGRESS_BAR (lookup_widget (window1, "pb_swap")); 00138 00139 if(total!=0){ 00140 gtk_progress_bar_set_fraction (progreso, 00141 (gfloat) CLAMP(((total - free) / total),0,1)); 00142 } 00143 else 00144 gtk_progress_bar_set_text(progreso, (gchar *)_("Not present")); 00145 00146 gdk_threads_leave(); 00147 }
void update_misc | ( | ) |
Update misc pane.
Update misc panel Updates labels and spinbuttons
Definition at line 360 of file update.c.
References acpi, acpi_info::battery, battery_info::cap, battery_info::cap_low, battery_info::cap_warning, stats_info::cpu, stats_info::ctxt, get_acpi_info(), get_stats_info(), battery_info::last_cap, lookup_widget(), battery_info::rem, stats, acpi_info::temp, acpi_info::temp_critical, battery_info::type, and window1.
Referenced by refresh().
00361 { 00362 GtkLabel *lbl; 00363 GtkProgressBar *pb; 00364 gfloat total,free; 00365 static float old_total,old_use; 00366 float use; 00367 gchar percent[4]; 00368 gchar user[10]; 00369 gchar nice[10]; 00370 gchar system[10]; 00371 gchar idle[10]; 00372 gchar iowait[10]; 00373 gchar irq[10]; 00374 gchar softirq[10]; 00375 00376 get_acpi_info(&acpi); 00377 00378 get_stats_info(&stats); 00379 sscanf(stats.cpu->str,"%s %s %s %s %s %s %s",user,nice,system,idle,iowait,\ 00380 irq,softirq); 00381 gdk_threads_enter(); 00382 00383 lbl=GTK_LABEL(lookup_widget(window1,"lbl_user")); 00384 gtk_label_set_text(lbl,user); 00385 lbl=GTK_LABEL(lookup_widget(window1,"lbl_nice")); 00386 gtk_label_set_text(lbl,nice); 00387 lbl=GTK_LABEL(lookup_widget(window1,"lbl_system")); 00388 gtk_label_set_text(lbl,system); 00389 lbl=GTK_LABEL(lookup_widget(window1,"lbl_idle")); 00390 gtk_label_set_text(lbl,idle); 00391 lbl=GTK_LABEL(lookup_widget(window1,"lbl_iowait")); 00392 gtk_label_set_text(lbl,iowait); 00393 lbl=GTK_LABEL(lookup_widget(window1,"lbl_irq")); 00394 gtk_label_set_text(lbl,irq); 00395 lbl=GTK_LABEL(lookup_widget(window1,"lbl_softirq")); 00396 gtk_label_set_text(lbl,softirq); 00397 00398 lbl=GTK_LABEL(lookup_widget(window1,"lbl_context")); 00399 gtk_label_set_text(lbl,stats.ctxt->str); 00400 00401 total=atof(user)+atof(nice)+atof(system)+atof(idle)+atof(iowait)+ 00402 atof(irq)+atof(softirq); 00403 00404 free=atof(idle)+atof(iowait)+atof(irq)+atof(softirq); 00405 use=total-free; 00406 00407 pb=GTK_PROGRESS_BAR(lookup_widget(window1,"pb_cpu")); 00408 gtk_progress_bar_set_fraction(pb,CLAMP((use-old_use)/(total-old_total),0,1)); 00409 sprintf(percent,"%.0f%s",CLAMP((use-old_use),0,100),"%"); 00410 gtk_progress_bar_set_text(pb,percent); 00411 00412 old_use=use; 00413 old_total=total; 00414 00415 /*Update ACPI*/ 00416 00417 lbl=GTK_LABEL(lookup_widget(window1,"lbl_cap")); 00418 gtk_label_set_text(lbl,acpi.battery.cap->str); 00419 lbl=GTK_LABEL(lookup_widget(window1,"lbl_last_cap")); 00420 gtk_label_set_text(lbl,acpi.battery.last_cap->str); 00421 lbl=GTK_LABEL(lookup_widget(window1,"lbl_cap_warning")); 00422 gtk_label_set_text(lbl,acpi.battery.cap_warning->str); 00423 lbl=GTK_LABEL(lookup_widget(window1,"lbl_cap_low")); 00424 gtk_label_set_text(lbl,acpi.battery.cap_low->str); 00425 lbl=GTK_LABEL(lookup_widget(window1,"lbl_batt_type")); 00426 gtk_label_set_text(lbl,acpi.battery.type->str); 00427 00428 if(strcmp(acpi.temp->str,_("Unknown"))!=0){ 00429 total=atof(acpi.temp_critical->str); 00430 free=atof(acpi.temp->str); 00431 00432 pb=GTK_PROGRESS_BAR(lookup_widget(window1,"pb_temp")); 00433 gtk_progress_bar_set_fraction(pb,free/total); 00434 gtk_progress_bar_set_text(pb,acpi.temp->str); 00435 }else{ 00436 pb=GTK_PROGRESS_BAR(lookup_widget(window1,"pb_temp")); 00437 gtk_progress_bar_set_text(pb,_("Unknown")); 00438 } 00439 00440 if(strcmp(acpi.battery.rem->str,_("Unknown"))!=0){ 00441 total=atof(acpi.battery.cap->str); 00442 free=atof(acpi.battery.rem->str); 00443 00444 pb=GTK_PROGRESS_BAR(lookup_widget(window1,"pb_batt")); 00445 gtk_progress_bar_set_fraction(pb,free/total); 00446 gtk_progress_bar_set_text(pb,acpi.battery.rem->str); 00447 }else{ 00448 pb=GTK_PROGRESS_BAR(lookup_widget(window1,"pb_batt")); 00449 gtk_progress_bar_set_text(pb,_("Unknown")); 00450 } 00451 00452 00453 00454 gdk_threads_leave(); 00455 }
void update_settings | ( | ) |
Update settings pane.
Update gtk widgets for settings panel Called from a callback
Definition at line 270 of file update.c.
References settings_info::domain, settings_info::fdasig, settings_info::fdfreed, settings_info::fdmax, get_settings_info(), settings_info::host, settings_info::inasig, settings_info::inmax, lookup_widget(), settings_info::max_opcall, settings_info::max_seminset, settings_info::max_semsets, settings_info::max_semsys, settings_info::page_max, settings_info::posix_mpq, settings_info::posix_mq, settings_info::posix_ms, settings_info::seg_max, settings_info::seg_size, settings, settings_info::threads, and window1.
Referenced by main(), on_btn_load_clicked(), and on_btn_write_clicked().
00271 { 00272 GtkSpinButton *spb; 00273 GtkLabel *lbl; 00274 GtkEntry *ent; 00275 gchar str[10]; /* For numeric conversion. */ 00276 00277 get_settings_info(&settings); 00278 00279 /* IMPORTANT: 00280 We should not lock with gdk_threads_enter because this function is 00281 called from a callback and callbacks are already running inside a gdk 00282 lock. 00283 In addition, this function is called from main thread before the collector 00284 thread is created, so we don't need to prevent the access from the other 00285 thread. 00286 */ 00287 00288 /* Identification */ 00289 ent=GTK_ENTRY(lookup_widget(window1,"ent_hostname")); 00290 gtk_entry_set_text(ent,settings.host->str); 00291 00292 ent=GTK_ENTRY(lookup_widget(window1,"ent_domainname")); 00293 gtk_entry_set_text(ent,settings.domain->str); 00294 00295 00296 /* threads */ 00297 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_maxthreads")); 00298 gtk_spin_button_set_value(spb,(gdouble)settings.threads); 00299 00300 /* files */ 00301 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_fdmax")); 00302 gtk_spin_button_set_value(spb,(gdouble)settings.fdmax); 00303 00304 lbl=GTK_LABEL(lookup_widget(window1,"lbl_inmax")); 00305 sprintf(str,"%d",settings.inmax); 00306 gtk_label_set_text(lbl,str); 00307 00308 lbl=GTK_LABEL(lookup_widget(window1,"lbl_fda")); 00309 sprintf(str,"%d",settings.fdasig); 00310 gtk_label_set_text(lbl,str); 00311 00312 lbl=GTK_LABEL(lookup_widget(window1,"lbl_ufd")); 00313 sprintf(str,"%d",settings.fdfreed); 00314 gtk_label_set_text(lbl,str); 00315 00316 lbl=GTK_LABEL(lookup_widget(window1,"lbl_ina")); 00317 sprintf(str,"%d",settings.inasig); 00318 gtk_label_set_text(lbl,str); 00319 00320 /* RT POSIX Signals */ 00321 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_mq")); 00322 gtk_spin_button_set_value(spb,(gdouble)settings.posix_mq); 00323 00324 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_max_mpq")); 00325 gtk_spin_button_set_value(spb,(gdouble)settings.posix_mpq); 00326 00327 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_max_ms")); 00328 gtk_spin_button_set_value(spb,(gdouble)settings.posix_ms); 00329 00330 /* Shared Memory */ 00331 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_max_pages")); 00332 gtk_spin_button_set_value(spb,(gdouble)settings.page_max); 00333 00334 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_max_segs")); 00335 gtk_spin_button_set_value(spb,(gdouble)settings.seg_max); 00336 00337 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_seg_size")); 00338 gtk_spin_button_set_value(spb,(gdouble)settings.seg_size); 00339 00340 /* Semaphores */ 00341 00342 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_sem_per_id")); 00343 gtk_spin_button_set_value(spb,(gdouble)settings.max_seminset); 00344 00345 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_sem_val")); 00346 gtk_spin_button_set_value(spb,(gdouble)settings.max_semsys); 00347 00348 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_ops")); 00349 gtk_spin_button_set_value(spb,(gdouble)settings.max_opcall); 00350 00351 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_sem_id")); 00352 gtk_spin_button_set_value(spb,(gdouble)settings.max_semsets); 00353 00354 00355 }
struct settings_info settings |
struct stats_info stats |
GtkWidget* window1 |