Improve ksysguardd reporting on NetBSD.

Don't generate backup files when installing kdm.
This commit is contained in:
Mark Davies 2007-12-27 19:43:05 +00:00 committed by Thomas Klausner
parent dead91404f
commit 3a3f997b47
5 changed files with 243 additions and 35 deletions

View file

@ -1,4 +1,4 @@
$NetBSD: distinfo,v 1.5 2007/12/23 19:25:59 mwdavies Exp $
$NetBSD: distinfo,v 1.6 2007/12/27 19:43:05 mwdavies Exp $
SHA1 (Daemon.README) = eb1e6af52adc02ded77af17e8953134b7e60d23b
RMD160 (Daemon.README) = 39edd92ed4314397080f32a8caff0ac3f716ecf4
@ -13,7 +13,7 @@ SHA1 (kdebase-workspace-3.97.0.tar.bz2) = 940d66293d63794246c3e2e18a73ffb5814bde
RMD160 (kdebase-workspace-3.97.0.tar.bz2) = fd5d2397c3641b67e30880463a6d53eb3eea25b9
Size (kdebase-workspace-3.97.0.tar.bz2) = 10180917 bytes
SHA1 (patch-aa) = 1d166ce62c30c3b13e3ec81882a450ef7d7876ad
SHA1 (patch-ab) = 5720d2a90f2385ef93f03ce6afb119ccd382fb4d
SHA1 (patch-ab) = 971f24889e6a44ed036e438b82171d0627021a4b
SHA1 (patch-ac) = 3576ed3933d7804f9623224382c805ff8960cf68
SHA1 (patch-ad) = a78221cb83772e82f67dfd15d8f3a7391c44f76d
SHA1 (patch-ae) = 736fc439a34298f51c9fb09200b9dc8628eabc43
@ -21,10 +21,10 @@ SHA1 (patch-af) = 00f4fd7dff0e44af433e52d732129cee2e38e84e
SHA1 (patch-ag) = ca61c6a2c6e3ebfff12ed6a3329f0e6808f0f8e1
SHA1 (patch-ba) = 8856a3268b4afcbff4b1a73179d0b2b39c0936c9
SHA1 (patch-bb) = 3fd4354bf49143153de92470733353112a60c87b
SHA1 (patch-bc) = c7cbf2f871876e3022a31d7212446d3d4e7eed01
SHA1 (patch-bd) = 926ef3a3b3786de8ec777ebfadd41776afc7fb58
SHA1 (patch-bc) = da3dd012b7b47dd34ce73e5deee94482685f6a8c
SHA1 (patch-bd) = a12e3833c46c3f0eb5dee62c59a0f8c816c0eebb
SHA1 (patch-be) = 2cb2af3824ea69681ea7ab96afacfb8f584e2007
SHA1 (patch-bf) = 796ec2493713b1a7c9318d8d744d08671f90ed36
SHA1 (patch-bf) = 49b12beb0ca81ca412d4d1221103ba4c851ac591
SHA1 (patch-bg) = fd24c670f3143e44227604b2a6102c5f4c12acde
SHA1 (patch-bh) = 9e8bf38267c144f687abce42cd8a8cc807a60c05
SHA1 (patch-bi) = d65d0d6ac3c02b9b0d4d6b220e92d96a15de6759

View file

@ -1,4 +1,4 @@
$NetBSD: patch-ab,v 1.1 2007/12/22 21:13:18 mwdavies Exp $
$NetBSD: patch-ab,v 1.2 2007/12/27 19:43:05 mwdavies Exp $
--- kdm/kfrontend/CMakeLists.txt.orig 2007-12-23 08:20:52.000000000 +1300
+++ kdm/kfrontend/CMakeLists.txt
@ -7,5 +7,5 @@ $NetBSD: patch-ab,v 1.1 2007/12/22 21:13:18 mwdavies Exp $
## use 'GENKDMCONF_FLAGS=... make install' to override
install(CODE "
-exec_program(${CMAKE_CURRENT_BINARY_DIR}/genkdmconf ARGS --in \$DESTDIR${CONFIG_INSTALL_DIR}/kdm --no-in-notice --face-src ${CMAKE_CURRENT_SOURCE_DIR}/pics \$GENKDMCONF_FLAGS)
+exec_program(${CMAKE_CURRENT_BINARY_DIR}/genkdmconf ARGS --in \$DESTDIR${CONFIG_INSTALL_DIR}/kdm --no-in-notice --face-src ${CMAKE_CURRENT_SOURCE_DIR}/pics --no-old \$GENKDMCONF_FLAGS)
+exec_program(${CMAKE_CURRENT_BINARY_DIR}/genkdmconf ARGS --in \$DESTDIR${CONFIG_INSTALL_DIR}/kdm --no-in-notice --face-src ${CMAKE_CURRENT_SOURCE_DIR}/pics --no-old --no-backup \$GENKDMCONF_FLAGS)
")

View file

@ -1,8 +1,8 @@
$NetBSD: patch-bc,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
$NetBSD: patch-bc,v 1.2 2007/12/27 19:43:05 mwdavies Exp $
--- ksysguard/ksysguardd/NetBSD/CPU.c.orig 2007-10-17 03:44:42.000000000 +1300
+++ ksysguard/ksysguardd/NetBSD/CPU.c
@@ -19,6 +19,8 @@
@@ -19,10 +19,11 @@
*/
@ -11,20 +11,24 @@ $NetBSD: patch-bc,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
#include <sys/dkstat.h>
#include <sys/sched.h> /* CPUSTATES */
#include <fcntl.h>
@@ -33,20 +35,13 @@
-#include <kvm.h>
#include <nlist.h>
#include <stdio.h>
#include <stdlib.h>
@@ -33,20 +34,11 @@
#include "Command.h"
#include "ksysguardd.h"
-long percentages(int cnt, int *out, long *new, long *old, long *diffs);
-
+void percentages(int, int *, u_int64_t *, u_int64_t *, u_int64_t *);
-struct nlist my_nlist[] = {
- {"_cp_time"},
- { 0 }
-};
+void percentages(int, int *, u_int64_t *, u_int64_t *, u_int64_t *);
kvm_t *kd;
-
-kvm_t *kd;
-
-unsigned long cp_time_offset;
-
-long cp_time[CPUSTATES];
@ -36,18 +40,26 @@ $NetBSD: patch-bc,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
int cpu_states[CPUSTATES];
void
@@ -64,9 +59,7 @@ initCpuInfo(struct SensorModul* sm)
@@ -64,10 +56,6 @@ initCpuInfo(struct SensorModul* sm)
registerLegacyMonitor("cpu/sys", "integer", printCPUSys, printCPUSysInfo, sm);
registerLegacyMonitor("cpu/idle", "integer", printCPUIdle, printCPUIdleInfo, sm);
- kd = kvm_open(NULL, NULL, NULL, O_RDONLY, "kvm_open");
- kvm_nlist(kd, my_nlist);
- cp_time_offset = my_nlist[0].n_value;
+ kd = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, "kvm_open");
-
updateCpuInfo();
}
@@ -92,7 +85,13 @@ exitCpuInfo(void)
@@ -84,15 +72,18 @@ exitCpuInfo(void)
removeMonitor("cpu/nice");
removeMonitor("cpu/sys");
removeMonitor("cpu/idle");
-
-
- kvm_close(kd);
}
int
updateCpuInfo(void)
{
@ -62,7 +74,7 @@ $NetBSD: patch-bc,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
percentages(CPUSTATES, cpu_states, cp_time, cp_old, cp_diff);
return (0);
}
@@ -167,20 +166,20 @@ printCPUIdleInfo(const char* cmd)
@@ -167,20 +158,20 @@ printCPUIdleInfo(const char* cmd)
* useful on BSD mchines for calculating cpu state percentages.
*/
@ -92,7 +104,7 @@ $NetBSD: patch-bc,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
/* initialization */
total_change = 0;
@@ -189,12 +188,11 @@ long *diffs;
@@ -189,12 +180,11 @@ long *diffs;
/* calculate changes for each state and the overall change */
for (i = 0; i < cnt; i++)
{
@ -110,7 +122,7 @@ $NetBSD: patch-bc,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
total_change += (*dp++ = change);
*old++ = *new++;
}
@@ -206,16 +204,9 @@ long *diffs;
@@ -206,16 +196,9 @@ long *diffs;
}
/* calculate percentages based on overall change, rounding up */

View file

@ -1,8 +1,16 @@
$NetBSD: patch-bd,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
$NetBSD: patch-bd,v 1.2 2007/12/27 19:43:05 mwdavies Exp $
--- ksysguard/ksysguardd/NetBSD/Memory.c.orig 2006-10-26 15:12:41.000000000 +1300
+++ ksysguard/ksysguardd/NetBSD/Memory.c
@@ -45,8 +45,11 @@
@@ -21,7 +21,6 @@
*/
#include <fcntl.h>
-#include <kvm.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
@@ -45,29 +44,25 @@
static size_t Total = 0;
static size_t MFree = 0;
static size_t Used = 0;
@ -16,7 +24,8 @@ $NetBSD: patch-bd,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
static size_t STotal = 0;
static size_t SFree = 0;
static size_t SUsed = 0;
@@ -55,19 +58,18 @@ static kvm_t *kd;
-static kvm_t *kd;
void
initMemory(struct SensorModul* sm)
{
@ -26,11 +35,9 @@ $NetBSD: patch-bd,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
-
- if ((kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, buf)) == NULL) {
- log_error("kvm_openfiles()");
+ if ((kd = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, "kvm_open")) == NULL) {
+ log_error("kvm_open()");
return;
}
- return;
- }
-
registerMonitor("mem/physical/free", "integer", printMFree, printMFreeInfo, sm);
registerMonitor("mem/physical/used", "integer", printUsed, printUsedInfo, sm);
- registerMonitor("mem/physical/buf", "integer", printBuffers, printBuffersInfo, sm);
@ -43,7 +50,15 @@ $NetBSD: patch-bd,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
registerMonitor("mem/swap/free", "integer", printSwapFree, printSwapFreeInfo, sm);
registerMonitor("mem/swap/used", "integer", printSwapUsed, printSwapUsedInfo, sm);
}
@@ -83,7 +85,6 @@ updateMemory(void)
@@ -75,7 +70,6 @@ initMemory(struct SensorModul* sm)
void
exitMemory(void)
{
- kvm_close(kd);
}
int
@@ -83,7 +77,6 @@ updateMemory(void)
{
#define ARRLEN(X) (sizeof(X)/sizeof(X[0]))
@ -51,7 +66,7 @@ $NetBSD: patch-bd,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
size_t len;
{
@@ -95,35 +96,23 @@ updateMemory(void)
@@ -95,35 +88,23 @@ updateMemory(void)
}
{
@ -99,7 +114,7 @@ $NetBSD: patch-bd,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
}
}
return 0;
@@ -154,27 +143,63 @@ printUsedInfo(const char* cmd)
@@ -154,27 +135,63 @@ printUsedInfo(const char* cmd)
}
void

View file

@ -1,8 +1,8 @@
$NetBSD: patch-bf,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
$NetBSD: patch-bf,v 1.2 2007/12/27 19:43:05 mwdavies Exp $
--- ksysguard/ksysguardd/NetBSD/ProcessList.c.orig 2007-02-19 22:51:48.000000000 +1300
+++ ksysguard/ksysguardd/NetBSD/ProcessList.c
@@ -20,10 +20,11 @@
@@ -20,14 +20,16 @@
*/
@ -15,3 +15,184 @@ $NetBSD: patch-bf,v 1.1.1.1 2007/12/12 03:35:23 mwdavies Exp $
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <kvm.h>
#include <sys/param.h>
#include <sys/sysctl.h>
#include <sys/time.h>
@@ -46,6 +48,8 @@ CONTAINER ProcessList = 0;
#define BUFSIZE 1024
+static kvm_t *kd;
+
typedef struct
{
/* This flag is set for all found processes at the beginning of the
@@ -157,15 +161,13 @@ findProcessInList(int pid)
}
static int
-updateProcess(int pid)
+updateProcess(int pid, struct kinfo_proc2 *p)
{
- static char *statuses[] = { "idle","run","sleep","stop","zombie" };
+ static char *statuses[] = { "", "idle","run","sleep","stop","zombie","dead","onproc" };
ProcessInfo* ps;
struct passwd* pwent;
- int mib[4];
- struct kinfo_proc p;
- size_t len;
+ char **argv, **a;
if ((ps = findProcessInList(pid)) == 0)
{
@@ -178,26 +180,18 @@ updateProcess(int pid)
ps->alive = 1;
- mib[0] = CTL_KERN;
- mib[1] = KERN_PROC;
- mib[2] = KERN_PROC_PID;
- mib[3] = pid;
-
- len = sizeof (p);
- if (sysctl(mib, 4, &p, &len, NULL, 0) == -1 || !len)
- return -1;
-
- ps->pid = p.kp_proc.p_pid;
- ps->ppid = p.kp_eproc.e_ppid;
- ps->uid = p.kp_eproc.e_ucred.cr_uid;
- ps->gid = p.kp_eproc.e_pgid;
- ps->priority = 0; //p.kp_proc.p_priority; ### TODO NetBSD: migrate to kinfo_proc2
- ps->niceLevel = p.kp_proc.p_nice;
-
- /* this isn't usertime -- it's total time (??) */
- ps->userTime = p.kp_proc.p_rtime.tv_sec*100+p.kp_proc.p_rtime.tv_usec/100;
- ps->sysTime = 0;
+ ps->pid = p->p_pid;
+ ps->ppid = p->p_ppid;
+ ps->uid = p->p_uid;
+ ps->gid = p->p_gid;
+ ps->priority = p->p_priority - 22; /* why 22? */
+ ps->niceLevel = p->p_nice - NZERO;
+
+#if 0
+ ps->userTime = p->p_rtime_sec*100+p->p_rtime_usec/100;
+ ps->sysTime = 0;
ps->sysLoad = 0;
+#endif
/* memory, process name, process uid */
/* find out user name with process uid */
@@ -205,19 +199,26 @@ updateProcess(int pid)
strlcpy(ps->userName,pwent&&pwent->pw_name? pwent->pw_name:"????",sizeof(ps->userName));
ps->userName[sizeof(ps->userName)-1]='\0';
- ps->userLoad = p.kp_proc.p_pctcpu / 100;
- ps->vmSize = (p.kp_eproc.e_vm.vm_tsize +
- p.kp_eproc.e_vm.vm_dsize +
- p.kp_eproc.e_vm.vm_ssize) * getpagesize();
- ps->vmRss = p.kp_eproc.e_vm.vm_rssize * getpagesize();
- strlcpy(ps->name,p.kp_proc.p_comm ? p.kp_proc.p_comm : "????", sizeof(ps->name));
- strlcpy(ps->status,(p.kp_proc.p_stat>=1)&&(p.kp_proc.p_stat<=5)? statuses[p.kp_proc.p_stat-1]:"????", sizeof(ps->status));
+ ps->userLoad = 100.0 * ((double)(p->p_pctcpu) / FSCALE);
+ ps->vmSize = (p->p_vm_tsize +
+ p->p_vm_dsize +
+ p->p_vm_ssize) * getpagesize();
+ ps->vmRss = p->p_vm_rssize * getpagesize();
+ strlcpy(ps->name,p->p_comm ? p->p_comm : "????", sizeof(ps->name));
+ strlcpy(ps->status,(p->p_stat<=7)? statuses[p->p_stat]:"????", sizeof(ps->status));
/* process command line */
- /* the following line causes segfaults on some FreeBSD systems... why?
- strncpy(ps->cmdline, p.kp_proc.p_args->ar_args, sizeof(ps->cmdline) - 1);
- */
- strcpy(ps->cmdline, "????");
+ argv = kvm_getargv2(kd, p, sizeof(ps->cmdline));
+ ps->cmdline[0] = '\0';
+ if ((a = argv) != NULL) {
+ while (*a) {
+ strlcat(ps->cmdline, *a, sizeof(ps->cmdline));
+ a++;
+ strlcat(ps->cmdline, " ", sizeof(ps->cmdline));
+ }
+ } else {
+ strcpy(ps->cmdline, "????");
+ }
return (0);
}
@@ -265,6 +266,8 @@ initProcessList(struct SensorModul* sm)
registerCommand("setpriority", setPriority);
}
+ kd = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, "kvm_open");
+
updateProcessList();
}
@@ -276,27 +279,22 @@ exitProcessList(void)
if (ProcessList)
free (ProcessList);
+
+ kvm_close(kd);
}
int
updateProcessList(void)
{
- int mib[3];
- size_t len;
- size_t num;
- struct kinfo_proc *p;
-
-
- mib[0] = CTL_KERN;
- mib[1] = KERN_PROC;
- mib[2] = KERN_PROC_ALL;
- sysctl(mib, 3, NULL, &len, NULL, 0);
- p = malloc(len);
- sysctl(mib, 3, p, &len, NULL, 0);
-
- for (num = 0; num < len / sizeof(struct kinfo_proc); num++)
- updateProcess(p[num].kp_proc.p_pid);
- free(p);
+ int len;
+ int num;
+ struct kinfo_proc2 *p;
+
+ p = kvm_getproc2(kd, KERN_PROC_ALL, 0,
+ sizeof(struct kinfo_proc2), &len);
+
+ for (num = 0; num < len; num++)
+ updateProcess(p[num].p_pid, &p[num]);
cleanupProcessList();
return (0);
@@ -305,8 +303,8 @@ updateProcessList(void)
void
printProcessListInfo(const char* cmd)
{
- fprintf(CurrentClient, "Name\tPID\tPPID\tUID\tGID\tStatus\tUser%%\tSystem%%\tNice\tVmSize\tVmRss\tLogin\tCommand\n");
- fprintf(CurrentClient, "s\td\td\td\td\tS\tf\tf\td\tD\tD\ts\ts\n");
+ fprintf(CurrentClient, "Name\tPID\tPPID\tUID\tGID\tStatus\tCPU%%\tPrio\tNice\tVmSize\tVmRss\tLogin\tCommand\n");
+ fprintf(CurrentClient, "s\td\td\td\td\tS\tf\td\td\tD\tD\ts\ts\n");
}
void
@@ -317,10 +315,10 @@ printProcessList(const char* cmd)
ps = first_ctnr(ProcessList); /* skip 'kernel' entry */
for (ps = next_ctnr(ProcessList); ps; ps = next_ctnr(ProcessList))
{
- fprintf(CurrentClient, "%s\t%ld\t%ld\t%ld\t%ld\t%s\t%.2f\t%.2f\t%d\t%d\t%d\t%s\t%s\n",
+ fprintf(CurrentClient, "%s\t%ld\t%ld\t%ld\t%ld\t%s\t%.2f\t%d\t%d\t%d\t%d\t%s\t%s\n",
ps->name, (long)ps->pid, (long)ps->ppid,
(long)ps->uid, (long)ps->gid, ps->status,
- ps->userLoad, ps->sysLoad, ps->niceLevel,
+ ps->userLoad, ps->priority, ps->niceLevel,
ps->vmSize / 1024, ps->vmRss / 1024, ps->userName, ps->cmdline);
}
}