00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00025 #ifdef HAVE_CONFIG_H
00026 # include <config.h>
00027 #endif
00028
00029 #include <glib.h>
00030
00031 #include <gtk/gtk.h>
00032 #include <signal.h>
00033 #include "lininfo.h"
00034 #include "support.h"
00035 #include "lkmonitor.h"
00036 #include <string.h>
00037 #include <stdio.h>
00038 #include <stdlib.h>
00039
00040
00041 extern GtkWidget *window1;
00042 extern struct mem_info mem;
00043 extern struct cpu_info cpu;
00044 extern struct dev_info devs;
00045 extern struct settings_info settings;
00046 extern struct stats_info stats;
00047 extern struct acpi_info acpi;
00048
00054 void
00055 update_mem ()
00056 {
00057
00058 GtkLabel *widget;
00059 GtkProgressBar *progreso;
00060 gfloat total, free;
00061
00062 get_mem_info (&mem);
00063
00064
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
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
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 }
00148
00149
00154 void
00155 update_cpu ()
00156 {
00157
00158 get_cpu_info (&cpu);
00159
00160 GtkLabel *widget;
00161
00162
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 }
00209
00213 void update_cpu_mhz(void)
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 }
00227
00231 void update_devs()
00232 {
00233 get_devs_info(&devs);
00234
00235 GtkListStore *model;
00236 GtkTreeView *gtv;
00237 GtkTreeIter iter;
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
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
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 }
00266
00270 void update_settings()
00271 {
00272 GtkSpinButton *spb;
00273 GtkLabel *lbl;
00274 GtkEntry *ent;
00275 gchar str[10];
00276
00277 get_settings_info(&settings);
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
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
00297 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_maxthreads"));
00298 gtk_spin_button_set_value(spb,(gdouble)settings.threads);
00299
00300
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
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
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
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 }
00356
00360 void update_misc()
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
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 }