Subversion Repositories HelenOS

Rev

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

Rev 2085 Rev 2089
Line 37... Line 37...
37
#ifdef CONFIG_PAGE_HT
37
#ifdef CONFIG_PAGE_HT
38
 
38
 
39
#ifndef KERN_PAGE_HT_H_
39
#ifndef KERN_PAGE_HT_H_
40
#define KERN_PAGE_HT_H_
40
#define KERN_PAGE_HT_H_
41
 
41
 
-
 
42
#include <arch/types.h>
-
 
43
#include <mm/as.h>
42
#include <mm/page.h>
44
#include <mm/page.h>
43
#include <synch/mutex.h>
45
#include <synch/mutex.h>
44
#include <arch/types.h>
-
 
45
#include <adt/list.h>
-
 
46
#include <adt/hash_table.h>
46
#include <adt/hash_table.h>
47
 
47
 
48
#define PAGE_HT_KEYS    2
48
#define PAGE_HT_KEYS    2
49
#define KEY_AS      0
49
#define KEY_AS      0
50
#define KEY_PAGE    1
50
#define KEY_PAGE    1
Line 59... Line 59...
59
#define PTE_WRITABLE(pte)   ((pte)->w != 0)
59
#define PTE_WRITABLE(pte)   ((pte)->w != 0)
60
#define PTE_EXECUTABLE(pte) ((pte)->x != 0)
60
#define PTE_EXECUTABLE(pte) ((pte)->x != 0)
61
 
61
 
62
#define SET_PTL0_ADDRESS(x)
62
#define SET_PTL0_ADDRESS(x)
63
 
63
 
64
struct pte {
-
 
65
    link_t link;        /**< Page hash table link. */
-
 
66
    as_t *as;       /**< Address space. */
-
 
67
    uintptr_t page;     /**< Virtual memory page. */
64
extern as_operations_t as_ht_operations;
68
    uintptr_t frame;    /**< Physical memory frame. */
-
 
69
    unsigned g : 1;     /**< Global page. */
-
 
70
    unsigned x : 1;     /**< Execute. */
-
 
71
    unsigned w : 1;     /**< Writable. */
-
 
72
    unsigned k : 1;     /**< Kernel privileges required. */
-
 
73
    unsigned c : 1;     /**< Cacheable. */
-
 
74
    unsigned a : 1;     /**< Accessed. */
-
 
75
    unsigned d : 1;     /**< Dirty. */
-
 
76
    unsigned p : 1;     /**< Present. */
-
 
77
};
-
 
78
 
-
 
79
extern page_mapping_operations_t ht_mapping_operations;
65
extern page_mapping_operations_t ht_mapping_operations;
-
 
66
 
80
extern mutex_t page_ht_lock;
67
extern mutex_t page_ht_lock;
81
extern hash_table_t page_ht;
68
extern hash_table_t page_ht;
82
extern hash_table_operations_t ht_operations;
69
extern hash_table_operations_t ht_operations;
83
 
70
 
84
#endif
71
#endif