PR: ports/62535 Submitted by: Michael Ranner <mranner@inode.at> Approved by: arved (mentor)
93 lines
2.2 KiB
C++
93 lines
2.2 KiB
C++
--- kcube/kcube.cpp.orig Thu Feb 13 22:12:49 2003
|
|
+++ kcube/kcube.cpp Wed Feb 25 03:59:17 2004
|
|
@@ -33,9 +33,19 @@
|
|
#include <qslider.h>
|
|
|
|
#include <stdio.h>
|
|
+#include <unistd.h>
|
|
+#include <fcntl.h>
|
|
+
|
|
+#include <nlist.h>
|
|
|
|
#include "kcube.h"
|
|
|
|
+struct nlist nl[] = {
|
|
+#define X_CP_TIME 0
|
|
+ { "_cp_time" },
|
|
+ { "" },
|
|
+};
|
|
+
|
|
extern "C"
|
|
{
|
|
KPanelApplet* init( QWidget *parent, const QString configFile)
|
|
@@ -64,7 +74,7 @@
|
|
|
|
// timer
|
|
cpu_timer = new QTimer();
|
|
- cpu_timer->start(500, false);
|
|
+ cpu_timer->start(1000, false);
|
|
connect (cpu_timer, SIGNAL ( timeout() ), this, SLOT ( cpu_timer_event() ) );
|
|
draw_timer = new QTimer();
|
|
draw_timer->start(50, false);
|
|
@@ -82,6 +92,7 @@
|
|
prefform = new PrefForm(this);
|
|
prefform->setFixedSize( prefform->width(), prefform->height() );
|
|
loadConfig();
|
|
+
|
|
}
|
|
|
|
Kcube::~Kcube()
|
|
@@ -119,14 +130,42 @@
|
|
int Kcube::calc_cpu_total()
|
|
{
|
|
int use_nice = 0, t=0;
|
|
- int total, used;
|
|
+ long total, used;
|
|
char cpuid[6];
|
|
- int cpu,nice,system,idle;
|
|
+ long cpu,nice,system,idle;
|
|
+#ifdef Q_OS_BSD4
|
|
+ static int name2oid[2] = { 0, 3 };
|
|
+ static int oidCpuTime[CTL_MAXNAME + 2];
|
|
+ static size_t oidCpuTimeLen = sizeof(oidCpuTime);
|
|
+ long cpuTime[CPUSTATES];
|
|
+ size_t cpuTimeLen = sizeof(cpuTime);
|
|
+ static char *name = "kern.cp_time";
|
|
+ static int initialized = 0;
|
|
+#endif
|
|
|
|
+#ifdef Q_OS_LINUX
|
|
FILE *fp;
|
|
fp = fopen("/proc/stat","rt");
|
|
fscanf(fp,"%s %d %d %d %d",cpuid,&cpu,&nice,&system,&idle);
|
|
fclose(fp);
|
|
+#endif
|
|
+
|
|
+#ifdef Q_OS_BSD4
|
|
+ if (! initialized) {
|
|
+ if (sysctl(name2oid, 2, oidCpuTime, &oidCpuTimeLen, name, strlen(name)) < 0)
|
|
+ return 0;
|
|
+ oidCpuTimeLen /= sizeof(int);
|
|
+ initialized = 1;
|
|
+ }
|
|
+
|
|
+ if (sysctl(oidCpuTime, oidCpuTimeLen, cpuTime, &cpuTimeLen, 0, 0) < 0)
|
|
+ return 0;
|
|
+
|
|
+ idle = cpuTime[CP_IDLE];
|
|
+ cpu = cpuTime[CP_USER];
|
|
+ nice = cpuTime[CP_NICE];
|
|
+ system = cpuTime[CP_SYS];
|
|
+#endif
|
|
|
|
used = cpu + system + nice;
|
|
total = used + idle + (1-use_nice)*nice;
|
|
@@ -148,7 +187,7 @@
|
|
if ( load > prefform->high_color_cpu->text().toInt() ) setColors("high");
|
|
else setColors("low");
|
|
|
|
- draw_timer->changeInterval( 51 - load/2 );
|
|
+ draw_timer->changeInterval( 61 - load/2 );
|
|
label_load->setText( QString("%1%").arg(load) );
|
|
}
|
|
|