update for new VM
[unix-history] / usr / src / sys / kern / subr_rmap.c
index 93af8d9..eb0cef7 100644 (file)
@@ -1,13 +1,17 @@
-/*     subr_rmap.c     4.9     83/05/18        */
+/*
+ * Copyright (c) 1982, 1986 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ *
+ *     @(#)subr_rmap.c 7.5 (Berkeley) %G%
+ */
 
 
-#include "../h/param.h"
-#include "../h/systm.h"
-#include "../h/map.h"
-#include "../h/dir.h"
-#include "../h/user.h"
-#include "../h/proc.h"
-#include "../h/text.h"
-#include "../h/kernel.h"
+#include "param.h"
+#include "systm.h"
+#include "map.h"
+#include "user.h"
+#include "proc.h"
+#include "kernel.h"
 
 /*
  * Resource map handling routines.
 
 /*
  * Resource map handling routines.
@@ -66,6 +70,8 @@ rminit(mp, size, addr, name, mapsize)
         */
        ep->m_size = size;
        ep->m_addr = addr;
         */
        ep->m_size = size;
        ep->m_addr = addr;
+       (++ep)->m_size = 0;
+       ep->m_addr = 0;
 }
 
 /*
 }
 
 /*
@@ -103,7 +109,7 @@ rmalloc(mp, size)
                         * boundaries.
                         */
                        if (mp == swapmap && nswdev > 1 &&
                         * boundaries.
                         */
                        if (mp == swapmap && nswdev > 1 &&
-                           (first = dmmax - bp->m_addr%dmmax) < bp->m_size) {
+                           (first = dmmax - bp->m_addr%dmmax) < size) {
                                if (bp->m_size - first < size)
                                        continue;
                                addr = bp->m_addr + first;
                                if (bp->m_size - first < size)
                                        continue;
                                addr = bp->m_addr + first;
@@ -320,7 +326,7 @@ rmget(mp, size, addr)
                         */
                        for (bp2=bp; bp2->m_size; bp2++)
                                ;
                         */
                        for (bp2=bp; bp2->m_size; bp2++)
                                ;
-                       if (bp2 == mp->m_limit)
+                       if (bp2 + 1 >= mp->m_limit)
                                return (0);
                        while (bp2 > bp) {
                                (bp2+1)->m_addr = bp2->m_addr;
                                return (0);
                        while (bp2 > bp) {
                                (bp2+1)->m_addr = bp2->m_addr;