Changeset 2299914 in mainline for genarch/src/mm/as_ht.c


Ignore:
Timestamp:
2006-03-16T12:57:31Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e898a8d7
Parents:
b7dcabb
Message:

Page table locking.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • genarch/src/mm/as_ht.c

    rb7dcabb r2299914  
    3535#include <memstr.h>
    3636#include <adt/hash_table.h>
     37#include <synch/spinlock.h>
    3738
    3839static pte_t *ht_create(int flags);
    3940
     41static void ht_lock(as_t *as, bool lock);
     42static void ht_unlock(as_t *as, bool unlock);
     43
    4044as_operations_t as_ht_operations = {
    41         .page_table_create = ht_create
     45        .page_table_create = ht_create,
     46        .page_table_lock = ht_lock,
     47        .page_table_unlock = ht_unlock,
    4248};
    4349
     
    5965        return NULL;
    6066}
     67
     68/** Lock page table.
     69 *
     70 * Lock address space and page hash table.
     71 * Interrupts must be disabled.
     72 *
     73 * @param as Address space.
     74 * @param lock If false, do not attempt to lock the address space.
     75 */
     76void ht_lock(as_t *as, bool lock)
     77{
     78        if (lock)
     79                spinlock_lock(&as->lock);
     80        spinlock_lock(&page_ht_lock);
     81}
     82
     83/** Unlock page table.
     84 *
     85 * Unlock address space and page hash table.
     86 * Interrupts must be disabled.
     87 *
     88 * @param as Address space.
     89 * @param unlock If false, do not attempt to lock the address space.
     90 */
     91void ht_unlock(as_t *as, bool unlock)
     92{
     93        spinlock_unlock(&page_ht_lock);
     94        if (unlock)
     95                spinlock_unlock(&as->lock);
     96}
Note: See TracChangeset for help on using the changeset viewer.