summaryrefslogtreecommitdiff
path: root/xc/util/compress/usermem.sh
diff options
context:
space:
mode:
Diffstat (limited to 'xc/util/compress/usermem.sh')
-rw-r--r--xc/util/compress/usermem.sh94
1 files changed, 94 insertions, 0 deletions
diff --git a/xc/util/compress/usermem.sh b/xc/util/compress/usermem.sh
new file mode 100644
index 000000000..e6e976325
--- /dev/null
+++ b/xc/util/compress/usermem.sh
@@ -0,0 +1,94 @@
+#!/bin/sh -
+#
+# Copyright (c) 1985 The Regents of the University of California.
+# All rights reserved.
+#
+# This code is derived from software contributed to Berkeley by
+# James A. Woods, derived from original work by Spencer Thomas
+# and Joseph Orost.
+#
+# Redistribution and use in source and binary forms are permitted
+# provided that the above copyright notice and this paragraph are
+# duplicated in all such forms and that any documentation,
+# advertising materials, and other materials related to such
+# distribution and use acknowledge that the software was developed
+# by the University of California, Berkeley. The name of the
+# University may not be used to endorse or promote products derived
+# from this software without specific prior written permission.
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# @(#)usermem.sh 5.5 (Berkeley) 10/15/88
+#
+: This shell script snoops around to find the maximum amount of available
+: user memory. These variables need to be set only if there is no
+: /usr/adm/messages. KMEM, UNIX, and CLICKSIZE can be set on the command
+: line, if desired, e.g. UNIX=/unix
+KMEM=/dev/kmem # User needs read access to KMEM
+UNIX=
+# VAX CLICKSIZE=512, UNIX=/vmunix
+# PDP-11 CLICKSIZE=64, UNIX=/unix
+# CADLINC 68000 CLICKSIZE=4096, UNIX=/unix
+# Perkin-Elmer 3205 CLICKSIZE=4096, UNIX=/edition7
+# Perkin-Elmer all others, CLICKSIZE=2048, UNIX=/edition7
+CLICKSIZE=512
+eval $*
+
+if test -n "$UNIX"
+then
+ : User must have specified it already.
+elif test -r /vmunix
+then
+ UNIX=/vmunix
+ CLICKSIZE=512 # Probably VAX
+elif test -r /edition7
+then
+ UNIX=/edition7
+ CLICKSIZE=2048 # Perkin-Elmer: change to 4096 on a 3205
+elif test -r /unix
+then
+ UNIX=/unix # Could be anything
+fi
+
+SIZE=0
+# messages: probably the most transportable
+if test -r /usr/adm/messages -a -s /usr/adm/messages
+then
+ SIZE=`grep avail /usr/adm/messages | sed -n '$s/.*[ ]//p'`
+fi
+
+if test 0$SIZE -le 0 # no SIZE in /usr/adm/messages
+then
+ if test -r $KMEM # Readable KMEM
+ then
+ if test -n "$UNIX"
+ then
+ SIZE=`echo maxmem/D | adb $UNIX $KMEM | sed -n '$s/.*[ ]//p'`
+ if test 0$SIZE -le 0
+ then
+ SIZE=`echo physmem/D | adb $UNIX $KMEM | sed -n '$s/.*[ ]//p'`
+ fi
+ SIZE=`expr 0$SIZE '*' $CLICKSIZE`
+ fi
+ fi
+fi
+
+case $UNIX in
+ /vmunix) # Assume 4.2bsd: check for resource limits
+ MAXSIZE=`csh -c limit | awk 'BEGIN { MAXSIZE = 1000000 }
+/datasize|memoryuse/ && NF == 3 { if ($2 < MAXSIZE) MAXSIZE = $2 }
+END { print MAXSIZE * 1000 }'`
+ if test $MAXSIZE -lt $SIZE
+ then
+ SIZE=$MAXSIZE
+ fi
+ ;;
+esac
+
+if test 0$SIZE -le 0
+then
+ echo 0;exit 1
+else
+ echo $SIZE
+fi