Common subdirectories: xfce4-systemload-plugin-0.4.2.orig/panel-plugin and xfce4-systemload-plugin-0.4.2/panel-plugin Common subdirectories: xfce4-systemload-plugin-0.4.2.orig/po and xfce4-systemload-plugin-0.4.2/po diff -ur xfce4-systemload-plugin-0.4.2.orig/panel-plugin/cpu.c xfce4-systemload-plugin-0.4.2/panel-plugin/cpu.c --- xfce4-systemload-plugin-0.4.2.orig/panel-plugin/cpu.c Wed Jan 17 18:01:09 2007 +++ xfce4-systemload-plugin-0.4.2/panel-plugin/cpu.c Sun Sep 6 21:57:14 2009 @@ -253,6 +253,63 @@ return cpu_used; } +#elif defined(__sun__) + +#include +kstat_ctl_t *kc; +gulong cpu_used; +gulong oldtotal = 0; +gulong oldused = 0; + +void init_stats() +{ + kc = kstat_open(); +} + +gulong read_cpuload() +{ + gulong used, total; + kstat_t *ksp; + kstat_named_t *knp; + + if (!kc) + { + init_stats(); + } + kstat_chain_update(kc); + used = 0; + total = 0; + for (ksp = kc->kc_chain; ksp != NULL; ksp = ksp->ks_next) + { + if (!strcmp(ksp->ks_module, "cpu") && !strcmp(ksp->ks_name, "sys")) + { + kstat_read(kc, ksp, NULL); + knp = kstat_data_lookup(ksp, "cpu_ticks_user"); + used += knp->value.ui64; + total += knp->value.ui64; + knp = kstat_data_lookup(ksp, "cpu_ticks_kernel"); + used += knp->value.ui64; + total += knp->value.ui64; + knp = kstat_data_lookup(ksp, "cpu_ticks_idle"); + total += knp->value.ui64; + } + } + + printf("CPU: %d %d %d %d\n", used, oldused, total, oldtotal); + + if ((total - oldtotal) != 0) + { + cpu_used = (100 * (double)(used - oldused)) / (double)(total - oldtotal); + } + else + { + cpu_used = 0; + } + oldused = used; + oldtotal = total; + return cpu_used; +} + #else -#error "Your plattform is not yet supported" +#error "Your platform is not yet supported" #endif diff -ur xfce4-systemload-plugin-0.4.2.orig/panel-plugin/memswap.c xfce4-systemload-plugin-0.4.2/panel-plugin/memswap.c --- xfce4-systemload-plugin-0.4.2.orig/panel-plugin/memswap.c Wed Jan 17 18:01:09 2007 +++ xfce4-systemload-plugin-0.4.2/panel-plugin/memswap.c Mon Sep 7 19:13:58 2009 @@ -461,7 +461,68 @@ return 0; } +#elif defined (__sun__) + +#include +#include +#include +kstat_ctl_t *kc; + +static size_t MTotal = 0; +static size_t MFree = 0; +static size_t MUsed = 0; +static size_t STotal = 0; +static size_t SFree = 0; +static size_t SUsed = 0; + +void mem_init_stats() +{ + kc = kstat_open(); +} + +gint read_memswap(gulong *mem, gulong *swap, gulong *MT, gulong *MU, gulong *ST, gulong *SU) +{ + long pagesize; + struct anoninfo swapinfo; + kstat_t *ksp; + kstat_named_t *knp; + + pagesize = (long)(sysconf(_SC_PAGESIZE)); + + /* FIXME use real numbers, not fake data */ + if (!kc) + { + mem_init_stats(); + } + + if (ksp = kstat_lookup(kc, "unix", 0, "system_pages")) + { + kstat_read(kc, ksp, NULL); + knp = kstat_data_lookup(ksp, "physmem"); + MTotal = (pagesize * knp->value.ui64) >> 10; + knp = kstat_data_lookup(ksp, "freemem"); + MUsed = MTotal - ((pagesize * knp->value.ui64) >> 10); + } + if (swapctl(SC_AINFO, &swapinfo) == 0) { + STotal = (swapinfo.ani_max * pagesize) >> 10; + SUsed = ((swapinfo.ani_max - swapinfo.ani_free) * pagesize) >> 10; + *swap = SUsed * 100 / STotal; + } else { + STotal = 0; + SUsed = 0; + *swap = 0; + } + + *mem = MUsed * 100 / MTotal; + + *MT = MTotal; + *MU = MUsed; + *ST = STotal; + *SU = SUsed; + + return 0; +} + #else -#error "Your platform is not yet support" +#error "Your platform is not yet supported" #endif - diff -ur xfce4-systemload-plugin-0.4.2.orig/panel-plugin/uptime.c xfce4-systemload-plugin-0.4.2/panel-plugin/uptime.c --- xfce4-systemload-plugin-0.4.2.orig/panel-plugin/uptime.c Wed Jan 17 18:01:09 2007 +++ xfce4-systemload-plugin-0.4.2/panel-plugin/uptime.c Sun Sep 6 22:25:50 2009 @@ -109,4 +109,32 @@ return uptime; } +#elif defined(__sun__) + +#include + +gulong read_uptime() +{ + kstat_ctl_t *kc; + kstat_t *ks; + kstat_named_t *boottime; + time_t now; + gulong uptime; + + if (((kc = kstat_open()) != 0) && ((ks = kstat_lookup(kc, "unix", 0, "system_misc")) != NULL) && (kstat_read(kc, ks, NULL) != -1) && ((boottime = kstat_data_lookup(ks, "boot_time")) != NULL)) { + time(&now); + uptime = now - boottime->value.ul; + kstat_close(kc); + } + else + { + g_warning("Cannot get boot_time"); + uptime = 0; + } + + return uptime; +} + +#else +#error "Your platform is not yet supported" #endif