From ca737cbec5c16debd771700a0451a5f19b06f5be Mon Sep 17 00:00:00 2001 From: Bill Joy Date: Sun, 1 Mar 1981 02:01:33 -0800 Subject: [PATCH 1/1] fixups for rm* routines SCCS-vsn: sys/sys/map.h 4.5 SCCS-vsn: sys/sys/systm.h 4.13 --- usr/src/sys/sys/map.h | 36 +++++++++++++++++++++++++++++++----- usr/src/sys/sys/systm.h | 3 ++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/usr/src/sys/sys/map.h b/usr/src/sys/sys/map.h index 9251c5f054..dffed9feff 100644 --- a/usr/src/sys/sys/map.h +++ b/usr/src/sys/sys/map.h @@ -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; +#define ARGMAPSIZE 16 struct map *kernelmap; #endif diff --git a/usr/src/sys/sys/systm.h b/usr/src/sys/sys/systm.h index 6c767ef03b..87b0fc9e80 100644 --- a/usr/src/sys/sys/systm.h +++ b/usr/src/sys/sys/systm.h @@ -1,4 +1,4 @@ -/* systm.h 4.12 81/02/27 */ +/* systm.h 4.13 81/02/28 */ /* * 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]; +char *panicstr; -- 2.20.1