Annotation of researchv9/sys/h/map.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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