Changeset 77147d6 in mainline for generic/src/mm


Ignore:
Timestamp:
2006-01-15T21:16:06Z (20 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5d2ab23
Parents:
44c259c
Message:

interface change: as_area_load_mapping → as_area_set_mapping (set single page mapping)
map init directly from the physical frames it is loaded in

File:
1 edited

Legend:

Unmodified
Added
Removed
  • generic/src/mm/as.c

    r44c259c r77147d6  
    143143                         * Frames will be allocated on-demand by
    144144                         * as_page_fault() or preloaded by
    145                          * as_area_load_mapping().
     145                         * as_area_set_mapping().
    146146                         */
    147147                        a->mapping[i] = UNALLOCATED_PFN;
     
    169169 * Initialize a->mapping.
    170170 *
    171  * @param a Target address space area.
    172  * @param pfn Array of frame numbers. Number of elements must match with a->mapping.
    173  */
    174 void as_area_load_mapping(as_area_t *a, index_t *pfn)
    175 {
     171 * @param a   Target address space area.
     172 * @param vpn Page number relative to area start.
     173 * @param pfn Frame number to map.
     174 */
     175void as_area_set_mapping(as_area_t *a, index_t vpn, index_t pfn)
     176{
     177        ASSERT(vpn < a->size);
     178        ASSERT(a->mapping[vpn] == UNALLOCATED_PFN);
     179        ASSERT(pfn != UNALLOCATED_PFN);
     180       
    176181        ipl_t ipl;
    177         int i;
    178182       
    179183        ipl = interrupts_disable();
    180184        spinlock_lock(&a->lock);
    181 
    182         for (i = 0; i < a->size; i++) {
    183                 ASSERT(a->mapping[i] == UNALLOCATED_PFN);
    184                 ASSERT(pfn[i] != UNALLOCATED_PFN);
    185                 a->mapping[i] = pfn[i];
    186         }
     185       
     186        a->mapping[vpn] = pfn;
    187187       
    188188        spinlock_unlock(&a->lock);
     
    254254                area->mapping[vpn] = frame / FRAME_SIZE;
    255255                ASSERT(area->mapping[vpn] != UNALLOCATED_PFN);
    256         } else {
     256        } else
    257257                frame = area->mapping[vpn] * FRAME_SIZE;
    258         }
    259258       
    260259        switch (area->type) {
Note: See TracChangeset for help on using the changeset viewer.