Rev 1070 | Rev 1149 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1070 | Rev 1147 | ||
---|---|---|---|
Line 34... | Line 34... | ||
34 | #include <arch/mm/asid.h> |
34 | #include <arch/mm/asid.h> |
35 | #include <arch/types.h> |
35 | #include <arch/types.h> |
36 | #include <typedefs.h> |
36 | #include <typedefs.h> |
37 | #include <synch/spinlock.h> |
37 | #include <synch/spinlock.h> |
38 | #include <adt/list.h> |
38 | #include <adt/list.h> |
- | 39 | #include <adt/btree.h> |
|
39 | 40 | ||
40 | /** Defined to be true if user address space and kernel address space shadow each other. */ |
41 | /** Defined to be true if user address space and kernel address space shadow each other. */ |
41 | #define KERNEL_ADDRESS_SPACE_SHADOWED KERNEL_ADDRESS_SPACE_SHADOWED_ARCH |
42 | #define KERNEL_ADDRESS_SPACE_SHADOWED KERNEL_ADDRESS_SPACE_SHADOWED_ARCH |
42 | 43 | ||
43 | #define KERNEL_ADDRESS_SPACE_START KERNEL_ADDRESS_SPACE_START_ARCH |
44 | #define KERNEL_ADDRESS_SPACE_START KERNEL_ADDRESS_SPACE_START_ARCH |
Line 61... | Line 62... | ||
61 | * Each as_area_t structure describes one contiguous area of virtual memory. |
62 | * Each as_area_t structure describes one contiguous area of virtual memory. |
62 | * In the future, it should not be difficult to support shared areas. |
63 | * In the future, it should not be difficult to support shared areas. |
63 | */ |
64 | */ |
64 | struct as_area { |
65 | struct as_area { |
65 | SPINLOCK_DECLARE(lock); |
66 | SPINLOCK_DECLARE(lock); |
66 | link_t link; |
- | |
67 | int flags; |
67 | int flags; |
68 | count_t pages; /**< Size of this area in multiples of PAGE_SIZE. */ |
68 | count_t pages; /**< Size of this area in multiples of PAGE_SIZE. */ |
69 | __address base; /**< Base address of this area. */ |
69 | __address base; /**< Base address of this area. */ |
70 | }; |
70 | }; |
71 | 71 | ||
Line 83... | Line 83... | ||
83 | SPINLOCK_DECLARE(lock); |
83 | SPINLOCK_DECLARE(lock); |
84 | 84 | ||
85 | /** Number of processors on wich is this address space active. */ |
85 | /** Number of processors on wich is this address space active. */ |
86 | count_t refcount; |
86 | count_t refcount; |
87 | 87 | ||
- | 88 | /** B+-tree of address space areas. */ |
|
88 | link_t as_area_head; |
89 | btree_t as_area_btree; |
89 | 90 | ||
90 | /** Page table pointer. Constant on architectures that use global page hash table. */ |
91 | /** Page table pointer. Constant on architectures that use global page hash table. */ |
91 | pte_t *page_table; |
92 | pte_t *page_table; |
92 | 93 | ||
93 | /** Address space identifier. Constant on architectures that do not support ASIDs.*/ |
94 | /** Address space identifier. Constant on architectures that do not support ASIDs.*/ |