xref: /original-bsd/usr.bin/compress/usermem.sh (revision 3b6250d9)
1#!/bin/sh -
2#
3# Copyright (c) 1985 The Regents of the University of California.
4# All rights reserved.
5#
6# This code is derived from software contributed to Berkeley by
7# James A. Woods, derived from original work by Spencer Thomas
8# and Joseph Orost.
9#
10# Redistribution and use in source and binary forms are permitted
11# provided that the above copyright notice and this paragraph are
12# duplicated in all such forms and that any documentation,
13# advertising materials, and other materials related to such
14# distribution and use acknowledge that the software was developed
15# by the University of California, Berkeley.  The name of the
16# University may not be used to endorse or promote products derived
17# from this software without specific prior written permission.
18# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
19# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
20# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21#
22#	@(#)usermem.sh	5.6 (Berkeley) 05/11/89
23#
24: This shell script snoops around to find the maximum amount of available
25: user memory.  These variables need to be set only if there is no
26: /usr/adm/messages.  KMEM, UNIX, and CLICKSIZE can be set on the command
27: line, if desired, e.g. UNIX=/unix
28KMEM=/dev/kmem		# User needs read access to KMEM
29UNIX=
30# VAX			CLICKSIZE=512,	UNIX=/vmunix
31# PDP-11		CLICKSIZE=64,	UNIX=/unix
32# CADLINC 68000		CLICKSIZE=4096,	UNIX=/unix
33# Perkin-Elmer 3205	CLICKSIZE=4096,	UNIX=/edition7
34# Perkin-Elmer all others, CLICKSIZE=2048, UNIX=/edition7
35CLICKSIZE=512
36eval $*
37
38if test -n "$UNIX"
39then
40    : User must have specified it already.
41elif test -r /vmunix
42then
43    UNIX=/vmunix
44    CLICKSIZE=512	# Probably VAX
45elif test -r /edition7
46then
47    UNIX=/edition7
48    CLICKSIZE=2048	# Perkin-Elmer: change to 4096 on a 3205
49elif test -r /unix
50then
51    UNIX=/unix		# Could be anything
52fi
53
54SIZE=0
55# messages: probably the most transportable
56if test -r /var/log/messages -a -s /var/log/messages
57then
58    SIZE=`grep avail /var/log/messages | sed -n '$s/.*[ 	]//p'`
59fi
60
61if test 0$SIZE -le 0		# no SIZE in /usr/adm/messages
62then
63    if test -r $KMEM		# Readable KMEM
64    then
65	if test -n "$UNIX"
66	then
67	    SIZE=`echo maxmem/D | adb $UNIX $KMEM | sed -n '$s/.*[ 	]//p'`
68	    if test 0$SIZE -le 0
69	    then
70		SIZE=`echo physmem/D | adb $UNIX $KMEM | sed -n '$s/.*[ 	]//p'`
71	    fi
72	    SIZE=`expr 0$SIZE '*' $CLICKSIZE`
73	fi
74    fi
75fi
76
77case $UNIX in
78    /vmunix)		# Assume 4.2bsd: check for resource limits
79	MAXSIZE=`csh -c limit | awk 'BEGIN	{ MAXSIZE = 1000000 }
80/datasize|memoryuse/ && NF == 3	{ if ($2 < MAXSIZE) MAXSIZE = $2 }
81END	{ print MAXSIZE * 1000 }'`
82	if test $MAXSIZE -lt $SIZE
83	then
84	    SIZE=$MAXSIZE
85	fi
86	;;
87esac
88
89if test 0$SIZE -le 0
90then
91    echo 0;exit 1
92else
93    echo $SIZE
94fi
95