summaryrefslogtreecommitdiff
path: root/parallel/glunix/patches/patch-aj
diff options
context:
space:
mode:
Diffstat (limited to 'parallel/glunix/patches/patch-aj')
-rw-r--r--parallel/glunix/patches/patch-aj284
1 files changed, 284 insertions, 0 deletions
diff --git a/parallel/glunix/patches/patch-aj b/parallel/glunix/patches/patch-aj
new file mode 100644
index 00000000000..994ec58a268
--- /dev/null
+++ b/parallel/glunix/patches/patch-aj
@@ -0,0 +1,284 @@
+$NetBSD: patch-aj,v 1.1.1.1 1998/10/21 19:59:29 garbled Exp $
+
+--- glunix/src/idle/didle_sysinfo.cc~ Thu Sep 18 12:04:55 1997
++++ glunix/src/idle/didle_sysinfo.cc Fri Feb 27 06:42:28 1998
+@@ -97,2 +97,12 @@
+ #include <stdio.h>
++
++#ifdef __NetBSD__
++#include <stdlib.h>
++#include <sys/time.h>
++#include <sys/param.h>
++#include <sys/proc.h>
++#include <miscfs/procfs/procfs.h>
++#include <vm/vm_swap.h>
++#include <sys/sysctl.h>
++#else
+ #include <sys/proc.h>
+@@ -102,5 +112,10 @@
+ #include <sys/time.h>
++#endif
++
+ #include <unistd.h>
+ #include <bsd.h>
++
++#ifndef __NetBSD__
+ #include <vm/anon.h> // Contains defns for swap virtual memory info
++#endif
+
+@@ -122,8 +137,47 @@
+ #define HASH(x) ((x) >> 1)
++
++#ifdef __NetBSD__
++int getpsize()
++{
++ FILE *file;
++ char *buf;
++
++ file = fopen("/kern/pagesize","r");
++ fscanf(file,"%s",buf);
++ fclose(file);
++ return atoi(buf);
++}
++#define PAGETOK(size) (size) * getpsize()
++
++#else
+ #define PAGETOK(size) (size) << 3 // 8K pages
++#endif
+
++#ifndef __NetBSD__
+ #define MAX(a, b) (((a) > (b)) ? (a) : (b))
+-
++#endif
+ /*****************************************************************************/
+
++#ifdef __NetBSD__
++static struct nlist nlst[] = {
++#define X_CCPU 0
++ { "_ccpu" }, /* 0 */
++#define X_CP_TIME 1
++ { "_cp_time" }, /* 1 */
++#define X_HZ 2
++ { "_hz" }, /* 2 */
++#define X_STATHZ 3
++ { "_stathz" }, /* 3 */
++#define X_AVENRUN 4
++ { "_averunnable" }, /* 4 */
++#define X_CNT 5
++ { "_cnt" },
++
++ { 0 }
++};
++
++static ulong cp_time_offset,cnt_offset;
++
++#else
++
+ /* definitions for indices in the nlist array */
+@@ -167,3 +221,3 @@
+ static ulong avenrunOffset, availrmemOffset, anoninfoOffset, swapfsOffset;
+-
++#endif
+ /*****************************************************************************/
+@@ -239,2 +293,41 @@
+ *****************************************************************************/
++#ifdef __NetBSD__
++Bool
++Idle_InitializeSysinfo(void)
++{
++ int notFound;
++ int i;
++
++ if ((kd = kvm_open(NULL, NULL, NULL, O_RDONLY, "kvm_open")) == NULL) {
++ kd = NULL;
++ perror("(dile)Idle_InitializeSysinfo: kvm_open");
++ return -1;
++ }
++ /* get the list of symbols we want to access in the kernel */
++ if ((notFound = kvm_nlist(kd, nlst)) < 0) {
++ fprintf(stderr, "res: nlist failed\n");
++ return False;
++ }
++ numCpus=1;
++ cp_time_offset = nlst[X_CP_TIME].n_value;
++ cnt_offset = nlst[X_CNT].n_value;
++
++ if (!(procdir = opendir(PROCFS))) {
++ (void) fprintf(stderr, "Unable to open %s\n", PROCFS);
++ return False;
++ }
++ /* handy for later on when we're reading it */
++ if (chdir(PROCFS)) {
++ (void) fprintf(stderr, "Unable to chdir to %s\n", PROCFS);
++ return False;
++ }
++
++ for (i = 0; i < USAGE_TABLE_SIZE; i++) {
++ procUsageTable[i].pid = -1;
++ procUsageTable[i].cpuUsage = 0.0;
++ }
++
++ return True;
++}
++#else
+ Bool
+@@ -303,3 +396,3 @@
+ }
+-
++#endif
+ /******************************************************************************
+@@ -335,4 +428,9 @@
+ *****************************************************************************/
++#ifdef __NetBSD__
++static ProcUsage *
++FindEntry(pid_t pid, double usage)
++#else
+ static ProcUsage *
+ FindEntry(struct prpsinfo *targProc, double usage)
++#endif
+ {
+@@ -340,5 +438,8 @@
+ ProcUsage *candidate;
++#ifdef __NetBSD__
++ index = HASH(pid);
++#else
+ ASSERT(targProc != NULL);
+-
+ index = HASH(targProc->pr_pid);
++#endif
+ start = index;
+@@ -346,3 +447,7 @@
+ candidate = &(procUsageTable[index]);
++#ifdef __NetBSD__
++ if (candidate->pid == pid) {
++#else
+ if (candidate->pid == targProc->pr_pid) {
++#endif
+ /* Has this pid been recycled? Are we hitting a very old process?
+@@ -355,3 +460,7 @@
+ if (candidate->pid == -1) {
++#ifdef __NetBSD__
++ candidate->pid = pid;
++#else
+ candidate->pid = targProc->pr_pid;
++#endif
+ candidate->cpuUsage = 0;
+@@ -381,2 +490,8 @@
+ *****************************************************************************/
++
++#ifdef __NetBSD__
++static void
++UpdateEntry(ProcUsage *entry, double usage)
++{
++#else
+ static void
+@@ -385,2 +500,3 @@
+ UNUSED_PARAM(proc);
++#endif
+ ASSERT(entry != NULL);
+@@ -410,3 +526,11 @@
+ {
++
++#ifndef __NetBSD__
+ struct prpsinfo currproc; /* pointer to current proc structure */
++#else
++ struct kinfo_proc *procs;
++ int mib[3],i;
++ size_t size;
++#endif
++
+ int fd;
+@@ -461,2 +585,29 @@
+ numProcs = 0;
++
++#ifdef __NetBSD__
++ size = 0;
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_ALL;
++
++ sysctl(mib, 3, NULL, &size, NULL, 0);
++ procs = (struct kinfo_proc *)malloc(size);
++ sysctl(mib, 3, procs, &size, NULL, 0);
++ numProcs = size / sizeof(struct kinfo_proc);
++
++ for (i=0; i<numProcs; i++) {
++ activeMemory[TOTAL] += procs[i].kp_eproc.e_xrssize;
++ vmInUse[TOTAL] += procs[i].kp_eproc.e_xsize;
++ currUsage = procs[i].kp_proc.p_rtime.tv_sec * 1.0e9 + procs[i].kp_proc.p_rtime.tv_usec * 1000;
++ oldProc = FindEntry(procs[i].kp_proc.p_pid, currUsage);
++ percentCpu = (currUsage - oldProc->cpuUsage) / timeDiff;
++ UpdateEntry(oldProc, currUsage);
++ cpuUsage[TOTAL] += (int) (percentCpu * 10.0);
++ if (glunixProcs->KeySearch(procs[i].kp_proc.p_pid) == NULL) {
++ activeMemory[SEQUENTIAL] += procs[i].kp_eproc.e_xrssize;
++ vmInUse[SEQUENTIAL] += procs[i].kp_eproc.e_xsize;
++ cpuUsage[SEQUENTIAL] += (int) (percentCpu * 10.0);
++ }
++ }
++#else
+ rewinddir(procdir);
+@@ -495,2 +646,3 @@
+ }
++#endif
+ total->mem = activeMemory[TOTAL];
+@@ -505,6 +657,15 @@
+ {
+- struct anoninfo anoninfo;
++#ifndef __NetBSD__
++ int i;
+ long avenrun[3];
++ struct anoninfo anoninfo;
+ int ani_max, ani_resv, availrmem, swapfs_minfree;
+- int i;
++#else
++ int i;
++ double avenrun[3];
++ struct vmmeter sum;
++ struct swapent *sep;
++ int totalsize, size, totalinuse, inuse, ncounted;
++ int rnswap, nswap;
++#endif
+
+@@ -517,3 +678,37 @@
+ }
++#ifdef __NetBSD__
+
++ getloadavg(avenrun,3);
++ for (i = 0; i < 3; i++) {
++ sysLoad->loadAvg[i] = avenrun[i];
++ }
++
++ kvm_read(kd, cnt_offset, (int *)(&sum), sizeof(sum));
++ sep = NULL;
++ do {
++ nswap = swapctl(SWAP_NSWAP, 0, 0);
++ if (nswap < 1)
++ break;
++ sep = (struct swapent *)malloc(nswap * sizeof(*sep));
++ if (sep == NULL)
++ break;
++ rnswap = swapctl(SWAP_STATS, (void *)sep, nswap);
++ if (nswap != rnswap)
++ break;
++
++ totalsize = totalinuse = ncounted = 0;
++ for (; rnswap-- > 0; sep++) {
++ ncounted++;
++ size = sep->se_nblks;
++ inuse = sep->se_inuse;
++ totalsize += size;
++ totalinuse += inuse;
++ }
++
++ } while (0);
++ if (sep)
++ free(sep);
++
++ sysLoad->memory = PAGETOK(dbtob(totalsize) - dbtob(totalinuse) + sum.v_free_count);
++#else
+ /* get load average array */
+@@ -541,2 +736,3 @@
+
++#endif
+ return;