Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 235e6c7 in mainline


Ignore:
Timestamp:
2011-05-21T16:47:40Z (9 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
master
Children:
c99693a
Parents:
0ff03f3
Message:

Propagate the nolock flag to individual mapping_find() implementations.

Location:
kernel
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/include/mm/page_pt.h

    r0ff03f3 r235e6c7  
    129129
    130130extern void page_mapping_insert_pt(as_t *, uintptr_t, uintptr_t, unsigned int);
    131 extern pte_t *page_mapping_find_pt(as_t *, uintptr_t);
     131extern pte_t *page_mapping_find_pt(as_t *, uintptr_t, bool);
    132132
    133133#endif
  • kernel/genarch/src/mm/page_ht.c

    r0ff03f3 r235e6c7  
    5858static void ht_mapping_insert(as_t *, uintptr_t, uintptr_t, unsigned int);
    5959static void ht_mapping_remove(as_t *, uintptr_t);
    60 static pte_t *ht_mapping_find(as_t *, uintptr_t);
     60static pte_t *ht_mapping_find(as_t *, uintptr_t, bool);
    6161
    6262/**
     
    214214 * this call visible.
    215215 *
    216  * @param as   Address space to wich page belongs.
     216 * @param as   Address space to which page belongs.
    217217 * @param page Virtual address of the page to be demapped.
    218218 *
     
    237237/** Find mapping for virtual page in page hash table.
    238238 *
    239  * Find mapping for virtual page.
    240  *
    241  * @param as   Address space to wich page belongs.
    242  * @param page Virtual page.
     239 * @param as     Address space to which page belongs.
     240 * @param page   Virtual page.
     241 * @param nolock True if the page tables need not be locked.
    243242 *
    244243 * @return NULL if there is no such mapping; requested mapping otherwise.
    245244 *
    246245 */
    247 pte_t *ht_mapping_find(as_t *as, uintptr_t page)
     246pte_t *ht_mapping_find(as_t *as, uintptr_t page, bool nolock)
    248247{
    249248        sysarg_t key[2] = {
     
    252251        };
    253252
    254         ASSERT(page_table_locked(as));
     253        ASSERT(nolock || page_table_locked(as));
    255254       
    256255        link_t *cur = hash_table_find(&page_ht, key);
  • kernel/genarch/src/mm/page_pt.c

    r0ff03f3 r235e6c7  
    4848static void pt_mapping_insert(as_t *, uintptr_t, uintptr_t, unsigned int);
    4949static void pt_mapping_remove(as_t *, uintptr_t);
    50 static pte_t *pt_mapping_find(as_t *, uintptr_t);
     50static pte_t *pt_mapping_find(as_t *, uintptr_t, bool);
    5151
    5252page_mapping_operations_t pt_mapping_operations = {
     
    238238/** Find mapping for virtual page in hierarchical page tables.
    239239 *
    240  * Find mapping for virtual page.
    241  *
    242  * @param as   Address space to which page belongs.
    243  * @param page Virtual page.
     240 * @param as     Address space to which page belongs.
     241 * @param page   Virtual page.
     242 * @param nolock True if the page tables need not be locked.
    244243 *
    245244 * @return NULL if there is no such mapping; entry from PTL3 describing
     
    247246 *
    248247 */
    249 pte_t *pt_mapping_find(as_t *as, uintptr_t page)
     248pte_t *pt_mapping_find(as_t *as, uintptr_t page, bool nolock)
    250249{
    251         ASSERT(page_table_locked(as));
     250        ASSERT(nolock || page_table_locked(as));
    252251
    253252        pte_t *ptl0 = (pte_t *) PA2KA((uintptr_t) as->genarch.page_table);
  • kernel/generic/include/mm/page.h

    r0ff03f3 r235e6c7  
    4747        void (* mapping_insert)(as_t *, uintptr_t, uintptr_t, unsigned int);
    4848        void (* mapping_remove)(as_t *, uintptr_t);
    49         pte_t *(* mapping_find)(as_t *, uintptr_t);
     49        pte_t *(* mapping_find)(as_t *, uintptr_t, bool);
    5050} page_mapping_operations_t;
    5151
  • kernel/generic/src/mm/page.c

    r0ff03f3 r235e6c7  
    169169        ASSERT(page_mapping_operations->mapping_find);
    170170       
    171         return page_mapping_operations->mapping_find(as, page);
     171        return page_mapping_operations->mapping_find(as, page, nolock);
    172172}
    173173
Note: See TracChangeset for help on using the changeset viewer.