Changeset 77147d6 in mainline for generic/src/mm/as.c
- Timestamp:
- 2006-01-15T21:16:06Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5d2ab23
- Parents:
- 44c259c
- File:
-
- 1 edited
-
generic/src/mm/as.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
generic/src/mm/as.c
r44c259c r77147d6 143 143 * Frames will be allocated on-demand by 144 144 * as_page_fault() or preloaded by 145 * as_area_ load_mapping().145 * as_area_set_mapping(). 146 146 */ 147 147 a->mapping[i] = UNALLOCATED_PFN; … … 169 169 * Initialize a->mapping. 170 170 * 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 */ 175 void 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 176 181 ipl_t ipl; 177 int i;178 182 179 183 ipl = interrupts_disable(); 180 184 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; 187 187 188 188 spinlock_unlock(&a->lock); … … 254 254 area->mapping[vpn] = frame / FRAME_SIZE; 255 255 ASSERT(area->mapping[vpn] != UNALLOCATED_PFN); 256 } else {256 } else 257 257 frame = area->mapping[vpn] * FRAME_SIZE; 258 }259 258 260 259 switch (area->type) {
Note:
See TracChangeset
for help on using the changeset viewer.
