Changeset 1d432f9 in mainline for kernel/generic/src/mm


Ignore:
Timestamp:
2010-05-31T22:33:44Z (15 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
179d052
Parents:
3a2b636
Message:

Reflect assumptions about lock and interrupt state in functions themselves.

Location:
kernel/generic/src/mm
Files:
5 edited

Legend:

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

    r3a2b636 r1d432f9  
    817817                [PF_ACCESS_EXEC] = AS_AREA_EXEC
    818818        };
     819
     820        ASSERT(interrupts_disabled());
     821        ASSERT(mutex_locked(&area->lock));
    819822       
    820823        if (!(area->flags & flagmap[access]))
     
    12211224unsigned int as_area_get_flags(as_area_t *area)
    12221225{
     1226        ASSERT(interrupts_disabled());
     1227        ASSERT(mutex_locked(&area->lock));
     1228
    12231229        return area_flags_to_page_flags(area->flags);
    12241230}
     
    13221328as_area_t *find_area_and_lock(as_t *as, uintptr_t va)
    13231329{
     1330        ASSERT(interrupts_disabled());
     1331        ASSERT(mutex_locked(&as->lock));
     1332
    13241333        btree_node_t *leaf;
    13251334        as_area_t *area = (as_area_t *) btree_search(&as->as_area_btree, va, &leaf);
     
    13861395    as_area_t *avoid_area)
    13871396{
     1397        ASSERT(interrupts_disabled());
     1398        ASSERT(mutex_locked(&as->lock));
     1399
    13881400        /*
    13891401         * We don't want any area to have conflicts with NULL page.
     
    14731485/** Return size of the address space area with given base.
    14741486 *
    1475  * @param base Arbitrary address insede the address space area.
     1487 * @param base Arbitrary address inside the address space area.
    14761488 *
    14771489 * @return Size of the address space area in bytes or zero if it
     
    14841496       
    14851497        ipl_t ipl = interrupts_disable();
     1498        page_table_lock(AS, true);
    14861499        as_area_t *src_area = find_area_and_lock(AS, base);
    14871500       
     
    14921505                size = 0;
    14931506       
     1507        page_table_unlock(AS, true);
    14941508        interrupts_restore(ipl);
    14951509        return size;
     
    15091523int used_space_insert(as_area_t *area, uintptr_t page, size_t count)
    15101524{
     1525        ASSERT(mutex_locked(&area->lock));
    15111526        ASSERT(page == ALIGN_DOWN(page, PAGE_SIZE));
    15121527        ASSERT(count);
     
    18151830int used_space_remove(as_area_t *area, uintptr_t page, size_t count)
    18161831{
     1832        ASSERT(mutex_locked(&area->lock));
    18171833        ASSERT(page == ALIGN_DOWN(page, PAGE_SIZE));
    18181834        ASSERT(count);
  • kernel/generic/src/mm/backend_anon.c

    r3a2b636 r1d432f9  
    7979{
    8080        uintptr_t frame;
     81
     82        ASSERT(page_table_locked(AS));
     83        ASSERT(mutex_locked(&area->lock));
    8184
    8285        if (!as_area_check_access(area, access))
     
    168171void anon_frame_free(as_area_t *area, uintptr_t page, uintptr_t frame)
    169172{
     173        ASSERT(page_table_locked(area->as));
     174        ASSERT(mutex_locked(&area->lock));
     175
    170176        frame_free(frame);
    171177}
     
    183189{
    184190        link_t *cur;
     191
     192        ASSERT(mutex_locked(&area->as->lock));
     193        ASSERT(mutex_locked(&area->lock));
    185194
    186195        /*
  • kernel/generic/src/mm/backend_elf.c

    r3a2b636 r1d432f9  
    8686        bool dirty = false;
    8787
     88        ASSERT(page_table_locked(AS));
     89        ASSERT(mutex_locked(&area->lock));
     90
    8891        if (!as_area_check_access(area, access))
    8992                return AS_PF_FAULT;
     
    235238        uintptr_t start_anon;
    236239
    237         ASSERT((page >= ALIGN_DOWN(entry->p_vaddr, PAGE_SIZE)) &&
    238             (page < entry->p_vaddr + entry->p_memsz));
     240        ASSERT(page_table_locked(area->as));
     241        ASSERT(mutex_locked(&area->lock));
     242
     243        ASSERT(page >= ALIGN_DOWN(entry->p_vaddr, PAGE_SIZE));
     244        ASSERT(page < entry->p_vaddr + entry->p_memsz);
     245
    239246        start_anon = entry->p_vaddr + entry->p_filesz;
    240247
     
    273280        btree_node_t *leaf, *node;
    274281        uintptr_t start_anon = entry->p_vaddr + entry->p_filesz;
     282
     283        ASSERT(mutex_locked(&area->as->lock));
     284        ASSERT(mutex_locked(&area->lock));
    275285
    276286        /*
  • kernel/generic/src/mm/backend_phys.c

    r3a2b636 r1d432f9  
    7272        uintptr_t base = area->backend_data.base;
    7373
     74        ASSERT(page_table_locked(AS));
     75        ASSERT(mutex_locked(&area->lock));
     76
    7477        if (!as_area_check_access(area, access))
    7578                return AS_PF_FAULT;
     
    9396void phys_share(as_area_t *area)
    9497{
     98        ASSERT(mutex_locked(&area->as->lock));
     99        ASSERT(mutex_locked(&area->lock));
    95100}
    96101
  • kernel/generic/src/mm/page.c

    r3a2b636 r1d432f9  
    120120    unsigned int flags)
    121121{
     122        ASSERT(interrupts_disabled());
     123        ASSERT(page_table_locked(as));
     124       
    122125        ASSERT(page_mapping_operations);
    123126        ASSERT(page_mapping_operations->mapping_insert);
    124        
     127
    125128        page_mapping_operations->mapping_insert(as, page, frame, flags);
    126129       
     
    143146void page_mapping_remove(as_t *as, uintptr_t page)
    144147{
     148        ASSERT(interrupts_disabled());
     149        ASSERT(page_table_locked(as));
     150       
    145151        ASSERT(page_mapping_operations);
    146152        ASSERT(page_mapping_operations->mapping_remove);
     
    167173pte_t *page_mapping_find(as_t *as, uintptr_t page)
    168174{
     175        ASSERT(interrupts_disabled());
     176        ASSERT(page_table_locked(as));
     177       
    169178        ASSERT(page_mapping_operations);
    170179        ASSERT(page_mapping_operations->mapping_find);
Note: See TracChangeset for help on using the changeset viewer.