fixups for rm* routines
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 1 Mar 1981 10:01:33 +0000 (02:01 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 1 Mar 1981 10:01:33 +0000 (02:01 -0800)
SCCS-vsn: sys/sys/map.h 4.5
SCCS-vsn: sys/sys/systm.h 4.13

usr/src/sys/sys/map.h
usr/src/sys/sys/systm.h

index 9251c5f..dffed9f 100644 (file)
@@ -1,17 +1,43 @@
-/*     map.h   4.4     81/02/27        */
+/*     map.h   4.5     81/02/28        */
 
 /*
 
 /*
- * Resource Allocation Maps
+ * Resource Allocation Maps.
+ *
+ * Associated routines manage sub-allocation of an address space using
+ * an array of segment descriptors.  The first element of this array
+ * is a map structure, describing the arrays extent and the name
+ * of the controlled object.  Each additional structure represents
+ * a free segment of the address space.
+ *
+ * A call to rminit initializes a resource map and may also be used
+ * to free some address space for the map.  Subsequent calls to rmalloc
+ * and rmfree allocate and free space in the resource map.  If the resource
+ * map becomes too fragmented to be described in the available space,
+ * then some of the resource is discarded.  This may lead to critical
+ * shortages, but is better than not checking (as the previous versions
+ * of these routines did) or giving up and calling panic().  The routines
+ * could use linked lists and call a memory allocator when they run
+ * out of space, but that would not solve the out of space problem when
+ * called at interrupt time.
+ *
+ * N.B.: The address 0 in the resource address space is not available
+ * as it is used internally by the resource map routines.
  */
  */
-struct map
+struct map {
+       struct  mapent *m_limit;        /* address of last slot in map */
+       char    *m_name;                /* name of resource */
+/* we use m_name when the map overflows, in warning messages */
+};
+struct mapent
 {
 {
-       int     m_size;
-       int     m_addr;
+       int     m_size;         /* size of this segment of the map */
+       int     m_addr;         /* resource-space addr of start of segment */
 };
 
 #ifdef KERNEL
 struct map *swapmap;
 int    nswapmap;
 struct map *argmap;
 };
 
 #ifdef KERNEL
 struct map *swapmap;
 int    nswapmap;
 struct map *argmap;
+#define        ARGMAPSIZE      16
 struct map *kernelmap;
 #endif
 struct map *kernelmap;
 #endif
index 6c767ef..87b0fc9 100644 (file)
@@ -1,4 +1,4 @@
-/*     systm.h 4.12    81/02/27        */
+/*     systm.h 4.13    81/02/28        */
 
 /*
  * Random set of variables
 
 /*
  * Random set of variables
@@ -83,3 +83,4 @@ char  vmmap[];                /* poor name! */
 int    umbabeg,umbaend;        /* where sensitive vm begins/ends */
 int    noproc;                 /* no one is running just now */
 extern int catcher[256];
 int    umbabeg,umbaend;        /* where sensitive vm begins/ends */
 int    noproc;                 /* no one is running just now */
 extern int catcher[256];
+char   *panicstr;