Annotation of 42BSD/sys/h/map.h, revision 1.1.1.1

1.1       root        1: /*     map.h   6.1     83/07/29        */
                      2: 
                      3: /*
                      4:  * Resource Allocation Maps.
                      5:  *
                      6:  * Associated routines manage sub-allocation of an address space using
                      7:  * an array of segment descriptors.  The first element of this array
                      8:  * is a map structure, describing the arrays extent and the name
                      9:  * of the controlled object.  Each additional structure represents
                     10:  * a free segment of the address space.
                     11:  *
                     12:  * A call to rminit initializes a resource map and may also be used
                     13:  * to free some address space for the map.  Subsequent calls to rmalloc
                     14:  * and rmfree allocate and free space in the resource map.  If the resource
                     15:  * map becomes too fragmented to be described in the available space,
                     16:  * then some of the resource is discarded.  This may lead to critical
                     17:  * shortages, but is better than not checking (as the previous versions
                     18:  * of these routines did) or giving up and calling panic().  The routines
                     19:  * could use linked lists and call a memory allocator when they run
                     20:  * out of space, but that would not solve the out of space problem when
                     21:  * called at interrupt time.
                     22:  *
                     23:  * N.B.: The address 0 in the resource address space is not available
                     24:  * as it is used internally by the resource map routines.
                     25:  */
                     26: struct map {
                     27:        struct  mapent *m_limit;        /* address of last slot in map */
                     28:        char    *m_name;                /* name of resource */
                     29: /* we use m_name when the map overflows, in warning messages */
                     30: };
                     31: struct mapent
                     32: {
                     33:        int     m_size;         /* size of this segment of the map */
                     34:        int     m_addr;         /* resource-space addr of start of segment */
                     35: };
                     36: 
                     37: #ifdef KERNEL
                     38: struct map *swapmap;
                     39: int    nswapmap;
                     40: struct map *argmap;
                     41: #define        ARGMAPSIZE      16
                     42: struct map *kernelmap;
                     43: struct map *mbmap;
                     44: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.