59,6 → 59,10 |
#define AS_AREA_EXEC 4 |
#define AS_AREA_DEVICE 8 |
|
/** Address space area attributes. */ |
#define AS_AREA_ATTR_NONE 0 |
#define AS_AREA_ATTR_PARTIAL 1 /* Not fully initialized area. */ |
|
/** Address space area structure. |
* |
* Each as_area_t structure describes one contiguous area of virtual memory. |
66,7 → 70,8 |
*/ |
struct as_area { |
SPINLOCK_DECLARE(lock); |
int flags; |
int flags; /**< Flags related to the memory represented by the address space area. */ |
int attributes; /**< Attributes related to the address space area itself. */ |
count_t pages; /**< Size of this area in multiples of PAGE_SIZE. */ |
__address base; /**< Base address of this area. */ |
}; |
112,9 → 117,9 |
|
extern void as_init(void); |
extern as_t *as_create(int flags); |
extern as_area_t *as_area_create(as_t *as, int flags, size_t size, __address base); |
extern as_area_t *as_area_create(as_t *as, int flags, size_t size, __address base, int attrs); |
extern __address as_area_resize(as_t *as, __address address, size_t size, int flags); |
int as_area_send(task_id_t id, __address base); |
int as_area_send(task_id_t dst_id, __address base); |
extern void as_set_mapping(as_t *as, __address page, __address frame); |
extern int as_page_fault(__address page); |
extern void as_switch(as_t *old, as_t *new); |