Integrate patch written by Andreas Wiese <bzimage (at) gmx.net> from

BSD Crew Dresden, which ports the previously linux-only CPU plugin
to FreeBSD.

PR:		ports/97575
Submitted by:	Tobias Roth <ports (at) fsck.ch> (maintainer)
This commit is contained in:
Thierry Thomas 2006-05-26 12:37:08 +00:00
parent 80b19c3e85
commit 1dc45df688
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=163476
6 changed files with 133 additions and 8 deletions

View File

@ -7,7 +7,7 @@
PORTNAME= fbpanel
PORTVERSION= 4.3
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= x11
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}
@ -19,7 +19,7 @@ COMMENT= A desktop panel that includes a taskbar, pager, launchbar and more
USE_X_PREFIX= yes
USE_GNOME= gtk20
HAS_CONFIGURE= yes
CONFIGURE_ARGS= --prefix=${PREFIX} --cpu=off
CONFIGURE_ARGS= --prefix=${PREFIX}
CFLAGS+= -I${WRKSRC}
USE_GMAKE= yes
@ -29,9 +29,4 @@ MANCOMPRESSED= yes
post-patch:
@${REINPLACE_CMD} -e 's|share/man|man|g' ${WRKSRC}/man/Makefile
post-install:
@${ECHO_MSG} ""
@${CAT} ${PKGMESSAGE}
@${ECHO_MSG} ""
.include <bsd.port.mk>

View File

@ -0,0 +1,13 @@
--- Makefile~ Tue May 16 19:28:38 2006
+++ Makefile Tue May 16 19:14:24 2006
@@ -24,6 +24,10 @@
-include $(DEP)
endif
+ifeq ($(PLUGIN_CPU),on)
+override CFLAGS += -DPLUGIN_CPU
+endif
+
TARGET := fbpanel
EXTRAOBJ :=

View File

@ -0,0 +1,92 @@
--- plugins/cpu.c~ Tue May 16 19:23:18 2006
+++ plugins/cpu.c Tue May 16 19:00:07 2006
@@ -18,14 +18,24 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
-/*A little bug fixed by Mykola <mykola@2ka.mipt.ru>:) */
+/*
+ * A little bug fixed by Mykola <mykola@2ka.mipt.ru> :)
+ * FreeBSD support added by Andreas Wiese <aw@instandbesetzt.net>
+ */
#include <string.h>
#include <sys/time.h>
#include <time.h>
-#include <sys/sysinfo.h>
+#ifdef __FreeBSD__
+# include <sys/types.h>
+# include <sys/resource.h>
+# include <sys/sysctl.h>
+#else
+# include <sys/sysinfo.h>
+#endif
#include <stdlib.h>
+#include <stdio.h>
#include "plugin.h"
#include "panel.h"
@@ -60,6 +70,37 @@
struct cpu_stat cpu_anterior;
} cpu_t;
+#ifdef __FreeBSD__
+static void
+get_procstat(unsigned long *u, unsigned long *n, unsigned long *s,
+ unsigned long *i)
+{
+ static int mib[2] = { -1, -1 }, init = 0, j, realhz;
+ long ct[CPUSTATES];
+
+
+ if(init == 0) {
+ struct clockinfo ci;
+ j = sizeof(ci);
+ sysctlbyname("kern.clockrate", &ci, &j, NULL, 0);
+ realhz = ci.stathz ? ci.stathz : ci.hz;
+
+ j = 2;
+ sysctlnametomib("kern.cp_time", mib, &j);
+
+ init = 1;
+ j = sizeof(ct);
+ }
+
+ sysctl(mib, 2, ct, &j, NULL, 0);
+ *u = ct[CP_USER] / realhz;
+ *n = ct[CP_NICE] / realhz;
+ *s = ct[CP_SYS] / realhz;
+ *i = ct[CP_IDLE] / realhz;
+
+ return;
+}
+#endif
static int
cpu_update(cpu_t *c)
@@ -67,18 +108,24 @@
int cpu_u=0, cpu_s=0, cpu_n=0, cpu_i=100;
unsigned int i;
struct cpu_stat cpu, cpu_r;
+#ifndef __FreeBSD__
FILE *stat;
+#endif
float total;
ENTER;
if(!c->pixmap)
RET(TRUE);
+#ifdef __FreeBSD__
+ get_procstat(&cpu.u, &cpu.n, &cpu.s, &cpu.i);
+#else
stat = fopen("/proc/stat", "r");
if(!stat)
RET(TRUE);
fscanf(stat, "cpu %lu %lu %lu %lu", &cpu.u, &cpu.n, &cpu.s, &cpu.i);
fclose(stat);
+#endif
cpu_r.u = cpu.u - c->cpu_anterior.u;
cpu_r.n = cpu.n - c->cpu_anterior.n;

View File

@ -0,0 +1,15 @@
--- plugin.c~ Tue May 16 19:22:41 2006
+++ plugin.c Tue May 16 19:16:29 2006
@@ -98,7 +98,11 @@
#ifdef STATIC_DESKNO
REGISTER_PLUGIN_CLASS(deskno_plugin_class, 0);
#endif
-
+
+#if defined(STATIC_CPU) && defined(PLUGIN_CPU)
+ REGISTER_PLUGIN_CLASS(cpu_plugin_class, 0);
+#endif
+
RET();
}

View File

@ -0,0 +1,11 @@
--- plugin.h~ Tue May 16 19:22:49 2006
+++ plugin.h Tue May 16 19:00:09 2006
@@ -61,7 +61,7 @@
#define STATIC_SPACE
#define STATIC_ICONS
#define STATIC_DESKNO
+#define STATIC_CPU
#endif
-
#endif

View File

@ -1 +0,0 @@
Please note that the cpu plugin has not been built due to compatibility reasons.