>From 9fans-outgoing-owner Mon Feb 5 10:53:27 1996 Received: by colossus.cse.psu.edu id <78439>; Mon, 5 Feb 1996 10:27:34 -0500 Received: from ns.dbSystems.com ([204.181.117.1]) by colossus.cse.psu.edu with SMTP id <78400>; Mon, 5 Feb 1996 10:13:10 -0500 Received: (from gdb@localhost) by ns.dbSystems.com (8.6.11/8.6.9) id BAA00398 for 9fans@cse.psu.edu; Mon, 5 Feb 1996 01:58:04 -0600 Date: Mon, 5 Feb 1996 02:58:04 -0500 From: "G. David Butler" Message-Id: <199602050758.BAA00398@ns.dbSystems.com> To: 9fans Subject: Kernel <-> bitmapped memory fragmentation Sender: owner-9fans Precedence: bulk Reply-To: 9fans Hello All! Ever notice (especially on small memory machines) how after a while you can't make those 8 1/2 window as big as you used to? Or how you were able to display that graphic before you did a move or resize on a window? Even after you delete all the windows and re-create them you just can't get it back unless you reboot? Well here is a quick fix. I changed the "first" fit xalloc into a "better" fit xalloc. In this way the xalloc memory will not become as fragmented so when that bit device wants his "3 screens full", he can still get it after he let it go. David Butler gdb@dbSystems.com ======================= alloc.c boddle ======================= #!/bin/rc # # command: /bin/boddle /sys/src/9/port/alloc.c alloc.c # srcdir: /sys/src/9/port # version: 823506923 # date: Mon Feb 5 01:55:23 CST 1996 # myname=$0 doextract=no fn usage{ echo $myname: usage: $myname '[-X] [src-directory]' >[1=2] exit usage } fn sigint{ rm -rf 823506923 exit interrupt } while(~ $1 -*){ switch($1){ case -X doextract=yes case -* usage } shift } switch($#*){ case 0 srcdir=/sys/src/9/port case 1 srcdir=$1 case * usage } if(! ~ $doextract yes){ echo This shell file contains a bundle of diffs representing changes echo to original source files in the Plan 9 distribution. It will run echo against the files in echo ' ' $srcdir echo '(unless overridden by the optional source directory argument)' echo and create a directory 823506923 containing the updated files. echo It will NOT automatically update the original files. echo echo Invoke with argument -X to perform the actual extraction. exit 0 } rm -rf 823506923 mkdir 823506923 target=823506923/alloc.c echo -n '823506923/alloc.c: ' if(! test -f $srcdir/alloc.c || ! test -r $srcdir/alloc.c){ echo $srcdir/alloc.c unreadable exit unreadable } sum=`{sum < $srcdir/alloc.c} if(! ~ 8e1aa10a7934 $sum(1)^$sum(2)){ echo $srcdir/alloc.c is not the original distribution file exit original } cp $srcdir/alloc.c 823506923/alloc.c ed 823506923/alloc.c >/dev/null >[2=1] <<'//GO.SYSIN DD VADIM alloc.c' 193c } if (sh) { p = (Xhdr*)sh->addr; sh->addr += size; sh->size -= size; if(sh->size == 0) { *sl = sh->link; sh->link = xlists.flist; xlists.flist = sh; } unlock(&xlists); p = KADDR(p); memset(p, 0, size); p->magix = Magichole; p->size = size; return p->data;