summaryrefslogtreecommitdiff
path: root/sysutils/asmem
diff options
context:
space:
mode:
authorSatoshi Taoka <taoka@FreeBSD.org>1999-06-14 20:00:37 +0000
committerSatoshi Taoka <taoka@FreeBSD.org>1999-06-14 20:00:37 +0000
commit8cd552ab2a2a1b9cbecde3bcb46cf6b547a10eba (patch)
treebc0811b2970be8a160770af69ecdeb9df209f3f3 /sysutils/asmem
parentFile-system monitor for the AfterStep window manager. (diff)
an AfterStep look-n-feel memory utilization monitor
PR: 12025 Submitted by: jack@germanium.xtalwind.net
Notes
Notes: svn path=/head/; revision=19478
Diffstat (limited to 'sysutils/asmem')
-rw-r--r--sysutils/asmem/Makefile27
-rw-r--r--sysutils/asmem/distinfo1
-rw-r--r--sysutils/asmem/files/patch-aa53
-rw-r--r--sysutils/asmem/files/patch-ab199
-rw-r--r--sysutils/asmem/pkg-comment1
-rw-r--r--sysutils/asmem/pkg-descr4
-rw-r--r--sysutils/asmem/pkg-plist1
7 files changed, 286 insertions, 0 deletions
diff --git a/sysutils/asmem/Makefile b/sysutils/asmem/Makefile
new file mode 100644
index 000000000000..4eee7fe5a320
--- /dev/null
+++ b/sysutils/asmem/Makefile
@@ -0,0 +1,27 @@
+# New ports collection makefile for: asfsm
+# Version required: asmem-1.2
+# Date created: 4 June 1999
+# Whom: jack
+#
+# $Id: Makefile,v 1.1.1.1 1999/06/14 19:26:35 taoka Exp $
+
+DISTNAME= asmem-1.2
+CATEGORIES= sysutils afterstep
+MASTER_SITES= http://www.bewoner.dma.be/Albert/software/
+
+MAINTAINER= jack@germnaium.xtalwind.net
+
+LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm
+
+USE_X_PREFIX= yes
+
+MAKEFILE= Makefile.UNIX
+
+MAN1= asmem.1
+
+do-install:
+ ${INSTALL_MAN} ${WRKSRC}/asmem.man ${PREFIX}/man/man1/asmem.1
+ ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} \
+ -g kmem -m 2755 ${WRKSRC}/asmem ${PREFIX}/bin
+
+.include <bsd.port.mk>
diff --git a/sysutils/asmem/distinfo b/sysutils/asmem/distinfo
new file mode 100644
index 000000000000..ee87dc7fca83
--- /dev/null
+++ b/sysutils/asmem/distinfo
@@ -0,0 +1 @@
+MD5 (asmem-1.2.tar.gz) = 895a23c917ffaa66567890df1d6f01aa
diff --git a/sysutils/asmem/files/patch-aa b/sysutils/asmem/files/patch-aa
new file mode 100644
index 000000000000..9777243f3904
--- /dev/null
+++ b/sysutils/asmem/files/patch-aa
@@ -0,0 +1,53 @@
+*** Makefile.UNIX.orig Sat Mar 6 09:13:53 1999
+--- Makefile.UNIX Fri Jun 4 15:41:11 1999
+***************
+*** 5,11 ****
+
+ # The location and names of the X11 libraries
+ LDIR = -L/usr/X11R6/lib
+! LIBS = -lXpm -lX11
+
+ # The include path to the X11 files
+ C_INCLUDE = -I. -I/usr/X11R6/include
+--- 5,11 ----
+
+ # The location and names of the X11 libraries
+ LDIR = -L/usr/X11R6/lib
+! LIBS = -lXpm -lX11 -lkvm
+
+ # The include path to the X11 files
+ C_INCLUDE = -I. -I/usr/X11R6/include
+***************
+*** 17,23 ****
+
+ CFLAGS = $(COPTS) $(COMPILE_FLAGS) $(C_INCLUDE)
+
+! OBJ = asmem.o asmem_x.o read_mem.o x_color.o safecopy.o
+
+ all: asmem
+ @echo Ready.
+--- 17,23 ----
+
+ CFLAGS = $(COPTS) $(COMPILE_FLAGS) $(C_INCLUDE)
+
+! OBJ = asmem.o asmem_x.o kvm_read.o x_color.o safecopy.o
+
+ all: asmem
+ @echo Ready.
+***************
+*** 34,40 ****
+ x_color.o: x_color.c
+ $(CC) -c $< $(CFLAGS) -o $@
+
+! read_mem.o: read_mem.h read_mem.c state.h
+ $(CC) -c $< $(CFLAGS) -o $@
+
+ asmem_x.o: asmem_x.c asmem_x.h x_color.h safecopy.h state.h\
+--- 34,40 ----
+ x_color.o: x_color.c
+ $(CC) -c $< $(CFLAGS) -o $@
+
+! kvm_read.o: read_mem.h kvm_read.c state.h
+ $(CC) -c $< $(CFLAGS) -o $@
+
+ asmem_x.o: asmem_x.c asmem_x.h x_color.h safecopy.h state.h\
diff --git a/sysutils/asmem/files/patch-ab b/sysutils/asmem/files/patch-ab
new file mode 100644
index 000000000000..d94c23afc0ee
--- /dev/null
+++ b/sysutils/asmem/files/patch-ab
@@ -0,0 +1,199 @@
+*** kvm_read.c.orig Fri Jun 4 15:45:13 1999
+--- kvm_read.c Fri Jun 4 15:49:13 1999
+***************
+*** 0 ****
+--- 1,194 ----
++ /*
++ * This file obtains memory usage via FreeBSD's kvm library.
++ * It is a modified version of read_mem.c which is
++ * Copyright (c) 1999 Albert Dorofeev <Albert@mail.dma.be>
++ * use this in place of that file for FreeBSD systems.
++ *
++ * This software is distributed under GPL. For details see LICENSE file.
++ */
++
++
++ #include <stdio.h>
++ #include <stdlib.h>
++ #include <string.h>
++ #include <fcntl.h>
++ #include <unistd.h>
++
++ #include "state.h"
++
++ #include <err.h>
++ #include <kvm.h>
++ #include <nlist.h>
++ #include <sys/rlist.h>
++ #include <sys/conf.h>
++ #include <sys/vmmeter.h>
++ #include <sys/types.h>
++ #include <sys/sysctl.h>
++ #include <vm/vm_param.h>
++
++ extern struct asmem_state state;
++
++ kvm_t *kd;
++
++ #define SVAR(var) __STRING(var) /* to force expansion */
++ #define KGET(idx, var) \
++ KGET1(idx, &var, sizeof(var), SVAR(var))
++ #define KGET1(idx, p, s, msg) \
++ KGET2(nl[idx].n_value, p, s, msg)
++ #define KGET2(addr, p, s, msg) \
++ if (kvm_read(kd, (u_long)(addr), p, s) != s) \
++ warnx("cannot read %s: %s", msg, kvm_geterr(kd))
++
++ struct nlist nl[] = {
++ #define VM_SWAPLIST 0
++ { "_swaplist" },/* list of free swap areas */
++ #define VM_SWDEVT 1
++ { "_swdevt" }, /* list of swap devices and sizes */
++ #define VM_NSWAP 2
++ { "_nswap" }, /* size of largest swap device */
++ #define VM_NSWDEV 3
++ { "_nswdev" }, /* number of swap devices */
++ #define VM_DMMAX 4
++ { "_dmmax" }, /* maximum size of a swap block */
++ #define X_CNT 5
++ { "_cnt" },
++ #define X_BUFSPACE 6
++ { "_bufspace" }, /* K in buffer cache */
++ { "" }
++ };
++
++ int close_meminfo()
++ {
++ kvm_close(kd);
++ return 0;
++ }
++
++ int read_meminfo()
++ {
++
++ int nswap, nswdev, dmmax;
++ int i, avail, nfree, used, bufspace = 0;
++ struct swdevt *sw;
++ struct vmmeter sum;
++ long *perdev;
++ struct rlist head;
++ struct rlisthdr swaplist;
++ struct rlist *swapptr;
++ u_long ptr;
++
++ KGET(VM_NSWAP, nswap);
++ KGET(VM_NSWDEV, nswdev);
++ KGET(VM_DMMAX, dmmax);
++ KGET1(VM_SWAPLIST, &swaplist, sizeof swaplist, "swaplist");
++ if ((sw = (struct swdevt*)malloc(nswdev * sizeof(*sw))) == NULL ||
++ (perdev = (long *)malloc(nswdev * sizeof(*perdev))) == NULL)
++ errx(1, "malloc");
++ KGET1(VM_SWDEVT, &ptr, sizeof ptr, "swdevt");
++ KGET2(ptr, sw, nswdev * sizeof(*sw), "*swdevt");
++
++ /* Count up swap space. */
++ nfree = 0;
++ memset(perdev, 0, nswdev * sizeof(*perdev));
++ swapptr = swaplist.rlh_list;
++ while (swapptr) {
++ int top, bottom, next_block;
++
++ KGET2(swapptr, &head, sizeof(struct rlist), "swapptr");
++
++ top = head.rl_end;
++ bottom = head.rl_start;
++
++ nfree += top - bottom + 1;
++
++ /*
++ * Swap space is split up among the configured disks.
++ *
++ * For interleaved swap devices, the first dmmax blocks
++ * of swap space some from the first disk, the next dmmax
++ * blocks from the next, and so on up to nswap blocks.
++ *
++ * The list of free space joins adjacent free blocks,
++ * ignoring device boundries. If we want to keep track
++ * of this information per device, we'll just have to
++ * extract it ourselves.
++ */
++ while (top / dmmax != bottom / dmmax) {
++ next_block = ((bottom + dmmax) / dmmax);
++ perdev[(bottom / dmmax) % nswdev] +=
++ next_block * dmmax - bottom;
++ bottom = next_block * dmmax;
++ }
++ perdev[(bottom / dmmax) % nswdev] +=
++ top - bottom + 1;
++
++ swapptr = head.rl_next;
++ }
++
++ avail = 0;
++ for (i = 0; i < nswdev; i++) {
++ int xsize, xfree;
++
++ /*
++ * Don't report statistics for partitions which have not
++ * yet been activated via swapon(8).
++ */
++ if (!(sw[i].sw_flags & SW_FREED))
++ continue;
++
++ /* The first dmmax is never allocated to avoid trashing of
++ * disklabels
++ */
++ xsize = sw[i].sw_nblks - dmmax;
++ xfree = perdev[i];
++ used = xsize - xfree;
++ avail += xsize;
++ }
++
++ /*
++ * If only one partition has been set up via swapon(8), we don't
++ * need to bother with totals.
++ */
++ used = avail - nfree;
++ free(sw);
++ free(perdev);
++
++ state.fresh.swap_total = avail * 512;
++ state.fresh.swap_used = used * 512;
++ state.fresh.swap_free = (avail - used) * 512;
++
++ KGET(X_CNT, sum);
++ KGET(X_BUFSPACE, bufspace);
++
++ state.fresh.total = sum.v_page_size * sum.v_page_count;
++ state.fresh.used = sum.v_page_size * (sum.v_page_count - sum.v_free_count);
++ state.fresh.free = sum.v_page_size * sum.v_free_count;
++ state.fresh.shared = 0;
++ state.fresh.cached = sum.v_page_size * sum.v_cache_count;
++
++ state.fresh.buffers = bufspace;
++ return(0);
++
++ }
++
++ int open_meminfo()
++ {
++
++ if (kd == 0) {
++ kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, 0);
++ if (kd != NULL) {
++ if (kvm_nlist(kd, nl) < 0) {
++ errx(1, "kvm_nlist: %s", kvm_geterr(kd));
++ }
++
++ if (nl[0].n_type == 0) {
++ errx(1, "no namelist");
++ }
++ } else {
++ warnx("kvm not available");
++ return(-1);
++ }
++ }
++ return(0);
++ }
++
++
diff --git a/sysutils/asmem/pkg-comment b/sysutils/asmem/pkg-comment
new file mode 100644
index 000000000000..9af52434e076
--- /dev/null
+++ b/sysutils/asmem/pkg-comment
@@ -0,0 +1 @@
+an AfterStep look-n-feel memory utilization monitor.
diff --git a/sysutils/asmem/pkg-descr b/sysutils/asmem/pkg-descr
new file mode 100644
index 000000000000..a544e7663d5c
--- /dev/null
+++ b/sysutils/asmem/pkg-descr
@@ -0,0 +1,4 @@
+The asmem tool is an AfterStep look-n-feel memory utilization monitor for X
+Windows. asmem shows the levels of utilization of the various kinds of memory
+and swap space. Multiple options for customization are available (colors,
+appearance, other stuff).
diff --git a/sysutils/asmem/pkg-plist b/sysutils/asmem/pkg-plist
new file mode 100644
index 000000000000..7e863e1e8225
--- /dev/null
+++ b/sysutils/asmem/pkg-plist
@@ -0,0 +1 @@
+bin/asmem