public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in x11-plugins/wmload/files: wmload-0.9.6-solaris.patch
@ 2015-04-17 12:52 Bernard Cafarelli (voyageur)
  0 siblings, 0 replies; only message in thread
From: Bernard Cafarelli (voyageur) @ 2015-04-17 12:52 UTC (permalink / raw
  To: gentoo-commits

voyageur    15/04/17 12:52:59

  Added:                wmload-0.9.6-solaris.patch
  Log:
  Version bump with new homepage, ebuild cleanup
  
  (Portage version: 2.2.18/cvs/Linux x86_64, signed Manifest commit with key 00F7AB331B0F097F)

Revision  Changes    Path
1.1                  x11-plugins/wmload/files/wmload-0.9.6-solaris.patch

file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-plugins/wmload/files/wmload-0.9.6-solaris.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-plugins/wmload/files/wmload-0.9.6-solaris.patch?rev=1.1&content-type=text/plain

Index: wmload-0.9.6-solaris.patch
===================================================================
* original: http://www.rampant.org/~dp/software/wmload.solaris.patch

--- wmload.c
+++ wmload.c
@@ -6,6 +6,11 @@
 #include <math.h>
 #include <fcntl.h>
 #include <X11/Xatom.h>
+#ifdef sun
+#include <sys/types.h>
+#include <sys/sysinfo.h>
+#include <kstat.h>
+#endif
 
 #include "back.xpm"
 #include "mask2.xbm"
@@ -410,6 +415,107 @@
     return (char *)p;
 }
 
+#ifdef sun
+
+static kstat_ctl_t *kc;
+static kstat_t **cpu_ksp_list;
+static int ncpus;
+
+void
+cpu_stats_init()
+{
+	int i = 0;
+	kstat_t *ksp;
+	static int kstats_ready = 0;
+
+	if (!kstats_ready) {
+		if ((kc = kstat_open()) == NULL) {
+		      fprintf(stderr,"wmload: can't open /dev/kstat\n");
+		      exit (1);
+		}
+		kstats_ready = 1;
+	}
+
+	for (ksp = kc->kc_chain; ksp; ksp = ksp->ks_next) {
+                if (strcmp(ksp->ks_module, "cpu_stat") == 0)
+			i++;
+	}
+
+	if (cpu_ksp_list) {
+		free(cpu_ksp_list);
+	}
+	cpu_ksp_list = (kstat_t **) calloc(i * sizeof (kstat_t *), 1); 
+	ncpus = i;
+
+	/*
+	 * stash the ksp for each CPU.
+	 */
+	i = 0;
+	for (ksp = kc->kc_chain; ksp; ksp = ksp->ks_next) {
+                if (strcmp(ksp->ks_module, "cpu_stat") == 0) {
+			cpu_ksp_list[i] = ksp;
+			i++;
+		}
+	}
+}
+
+int
+get_cpu_stats()
+{
+	int i;
+	cpu_stat_t stat;
+	static int firsttime = 1;
+
+	if (firsttime) {
+		firsttime = 0;
+		return (1);	/* force code to go initialize kstat stuff */
+	}
+
+	/*
+	 * Read each cpu's data.  If the chain has changed (a state change
+	 * has happened, maybe a new cpu was added to the system), then
+	 * return 1.  This will cause the code to reinitialize the cpu_ksp_list
+	 * array.  word.
+	 */
+	cp_time[0] = cp_time[1] = cp_time[2] = cp_time[3] = 0;
+	for (i = 0; i < ncpus; i++) {
+		if (kstat_read(kc, cpu_ksp_list[i], (void *) &stat) == -1)
+			return (1);
+		cp_time[0] += stat.cpu_sysinfo.cpu[CPU_USER]; /* user */
+		cp_time[1] += stat.cpu_sysinfo.cpu[CPU_WAIT]; /* "nice" */
+		cp_time[2] += stat.cpu_sysinfo.cpu[CPU_KERNEL]; /* sys */
+		cp_time[3] += stat.cpu_sysinfo.cpu[CPU_IDLE]; /* idle ("free")*/
+	}
+	return (0);
+}
+
+void GetLoad(int Maximum, int *usr, int *nice, int *sys, int *free)
+{
+  int total;
+
+  while (get_cpu_stats() != 0) {
+	  cpu_stats_init();
+  }
+
+  *usr  = cp_time[0] - last[0];
+  *nice = cp_time[1] - last[1];
+  *sys  = cp_time[2] - last[2];
+  *free = cp_time[3] - last[3];
+
+  /* printf("[%d %d %d %d]\n", *usr, *nice, *sys, *free); */
+
+  total = *usr + *nice + *sys + *free;
+  last[0] = cp_time[0];
+  last[1] = cp_time[1];
+  last[2] = cp_time[2];
+  last[3] = cp_time[3];
+
+  *usr = rint(Maximum * (float)(*usr)   /total);
+  *nice =rint(Maximum * (float)(*nice)  /total);
+  *sys = rint(Maximum * (float)(*sys)   /total);
+  *free = rint(Maximum * (float)(*free) /total);
+}
+#else /* sun */
 void GetLoad(int Maximum, int *usr, int *nice, int *sys, int *free)
 { 
   char buffer[100];/*[4096+1];*/
@@ -445,6 +551,7 @@
   *sys = rint(Maximum * (float)(*sys)   /total);
   *free = rint(Maximum * (float)(*free) /total);
 }
+#endif
 
 void InsertLoad()
 {





^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-04-17 12:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-17 12:52 [gentoo-commits] gentoo-x86 commit in x11-plugins/wmload/files: wmload-0.9.6-solaris.patch Bernard Cafarelli (voyageur)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox