Rev 3403 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3403 | Rev 4691 | ||
---|---|---|---|
Line 92... | Line 92... | ||
92 | link_t inactive_as_with_asid_link; |
92 | link_t inactive_as_with_asid_link; |
93 | /** |
93 | /** |
94 | * Number of processors on wich is this address space active. |
94 | * Number of processors on wich is this address space active. |
95 | * Protected by asidlock. |
95 | * Protected by asidlock. |
96 | */ |
96 | */ |
97 | count_t cpu_refcount; |
97 | size_t cpu_refcount; |
98 | /** |
98 | /** |
99 | * Address space identifier. |
99 | * Address space identifier. |
100 | * Constant on architectures that do not support ASIDs. |
100 | * Constant on architectures that do not support ASIDs. |
101 | * Protected by asidlock. |
101 | * Protected by asidlock. |
102 | */ |
102 | */ |
Line 130... | Line 130... | ||
130 | */ |
130 | */ |
131 | typedef struct { |
131 | typedef struct { |
132 | /** This lock must be acquired only when the as_area lock is held. */ |
132 | /** This lock must be acquired only when the as_area lock is held. */ |
133 | mutex_t lock; |
133 | mutex_t lock; |
134 | /** This structure can be deallocated if refcount drops to 0. */ |
134 | /** This structure can be deallocated if refcount drops to 0. */ |
135 | count_t refcount; |
135 | size_t refcount; |
136 | /** |
136 | /** |
137 | * B+tree containing complete map of anonymous pages of the shared area. |
137 | * B+tree containing complete map of anonymous pages of the shared area. |
138 | */ |
138 | */ |
139 | btree_t pagemap; |
139 | btree_t pagemap; |
140 | } share_info_t; |
140 | } share_info_t; |
Line 154... | Line 154... | ||
154 | elf_header_t *elf; |
154 | elf_header_t *elf; |
155 | elf_segment_header_t *segment; |
155 | elf_segment_header_t *segment; |
156 | }; |
156 | }; |
157 | struct { /**< phys_backend members */ |
157 | struct { /**< phys_backend members */ |
158 | uintptr_t base; |
158 | uintptr_t base; |
159 | count_t frames; |
159 | size_t frames; |
160 | }; |
160 | }; |
161 | } mem_backend_data_t; |
161 | } mem_backend_data_t; |
162 | 162 | ||
163 | /** Address space area structure. |
163 | /** Address space area structure. |
164 | * |
164 | * |
Line 173... | Line 173... | ||
173 | */ |
173 | */ |
174 | int flags; |
174 | int flags; |
175 | /** Attributes related to the address space area itself. */ |
175 | /** Attributes related to the address space area itself. */ |
176 | int attributes; |
176 | int attributes; |
177 | /** Size of this area in multiples of PAGE_SIZE. */ |
177 | /** Size of this area in multiples of PAGE_SIZE. */ |
178 | count_t pages; |
178 | size_t pages; |
179 | /** Base address of this area. */ |
179 | /** Base address of this area. */ |
180 | uintptr_t base; |
180 | uintptr_t base; |
181 | /** Map of used space. */ |
181 | /** Map of used space. */ |
182 | btree_t used_space; |
182 | btree_t used_space; |
183 | 183 | ||
Line 223... | Line 223... | ||
223 | extern int as_area_change_flags(as_t *as, int flags, uintptr_t address); |
223 | extern int as_area_change_flags(as_t *as, int flags, uintptr_t address); |
224 | 224 | ||
225 | extern int as_area_get_flags(as_area_t *area); |
225 | extern int as_area_get_flags(as_area_t *area); |
226 | extern bool as_area_check_access(as_area_t *area, pf_access_t access); |
226 | extern bool as_area_check_access(as_area_t *area, pf_access_t access); |
227 | extern size_t as_area_get_size(uintptr_t base); |
227 | extern size_t as_area_get_size(uintptr_t base); |
228 | extern int used_space_insert(as_area_t *a, uintptr_t page, count_t count); |
228 | extern int used_space_insert(as_area_t *a, uintptr_t page, size_t count); |
229 | extern int used_space_remove(as_area_t *a, uintptr_t page, count_t count); |
229 | extern int used_space_remove(as_area_t *a, uintptr_t page, size_t count); |
230 | 230 | ||
231 | 231 | ||
232 | /* Interface to be implemented by architectures. */ |
232 | /* Interface to be implemented by architectures. */ |
233 | #ifndef as_constructor_arch |
233 | #ifndef as_constructor_arch |
234 | extern int as_constructor_arch(as_t *as, int flags); |
234 | extern int as_constructor_arch(as_t *as, int flags); |