Subversion Repositories HelenOS

Rev

Rev 2007 | Rev 2071 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2007 Rev 2015
Line 68... Line 68...
68
 
68
 
69
 
69
 
70
/**
70
/**
71
 * Macro for computing page color.
71
 * Macro for computing page color.
72
 */
72
 */
73
#define PAGE_COLOR(va)      (((va) >> PAGE_WIDTH) & ((1 << PAGE_COLOR_BITS) - 1))
73
#define PAGE_COLOR(va)  (((va) >> PAGE_WIDTH) & ((1 << PAGE_COLOR_BITS) - 1))
74
 
74
 
75
/** Page fault access type. */
75
/** Page fault access type. */
76
enum pf_access {
76
enum pf_access {
77
    PF_ACCESS_READ,
77
    PF_ACCESS_READ,
78
    PF_ACCESS_WRITE,
78
    PF_ACCESS_WRITE,
Line 80... Line 80...
80
};
80
};
81
typedef enum pf_access pf_access_t;
81
typedef enum pf_access pf_access_t;
82
 
82
 
83
/** Operations to manipulate page mappings. */
83
/** Operations to manipulate page mappings. */
84
struct page_mapping_operations {
84
struct page_mapping_operations {
85
    void (* mapping_insert)(as_t *as, uintptr_t page, uintptr_t frame, int flags);
85
    void (* mapping_insert)(as_t *as, uintptr_t page, uintptr_t frame, int
-
 
86
        flags);
86
    void (* mapping_remove)(as_t *as, uintptr_t page);
87
    void (* mapping_remove)(as_t *as, uintptr_t page);
87
    pte_t *(* mapping_find)(as_t *as, uintptr_t page);
88
    pte_t *(* mapping_find)(as_t *as, uintptr_t page);
88
};
89
};
89
typedef struct page_mapping_operations page_mapping_operations_t;
90
typedef struct page_mapping_operations page_mapping_operations_t;
90
 
91
 
91
extern page_mapping_operations_t *page_mapping_operations;
92
extern page_mapping_operations_t *page_mapping_operations;
92
 
93
 
93
extern void page_init(void);
94
extern void page_init(void);
94
extern void page_table_lock(as_t *as, bool lock);
95
extern void page_table_lock(as_t *as, bool lock);
95
extern void page_table_unlock(as_t *as, bool unlock);
96
extern void page_table_unlock(as_t *as, bool unlock);
96
extern void page_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame, int flags);
97
extern void page_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame, int
-
 
98
    flags);
97
extern void page_mapping_remove(as_t *as, uintptr_t page);
99
extern void page_mapping_remove(as_t *as, uintptr_t page);
98
extern pte_t *page_mapping_find(as_t *as, uintptr_t page);
100
extern pte_t *page_mapping_find(as_t *as, uintptr_t page);
99
extern pte_t *page_table_create(int flags);
101
extern pte_t *page_table_create(int flags);
100
extern void page_table_destroy(pte_t *page_table);
102
extern void page_table_destroy(pte_t *page_table);
101
extern void map_structure(uintptr_t s, size_t size);
103
extern void map_structure(uintptr_t s, size_t size);