Rev 72 | Rev 122 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 72 | Rev 121 | ||
---|---|---|---|
Line 27... | Line 27... | ||
27 | */ |
27 | */ |
28 | 28 | ||
29 | #ifndef __VM_H__ |
29 | #ifndef __VM_H__ |
30 | #define __VM_H__ |
30 | #define __VM_H__ |
31 | 31 | ||
- | 32 | #include <arch/mm/page.h> |
|
32 | #include <arch/mm/vm.h> |
33 | #include <arch/mm/vm.h> |
33 | #include <arch/types.h> |
34 | #include <arch/types.h> |
34 | #include <typedefs.h> |
35 | #include <typedefs.h> |
35 | #include <synch/spinlock.h> |
36 | #include <synch/spinlock.h> |
36 | #include <list.h> |
37 | #include <list.h> |
Line 49... | Line 50... | ||
49 | enum vm_type { |
50 | enum vm_type { |
50 | VMA_TEXT = 1, VMA_DATA, VMA_STACK |
51 | VMA_TEXT = 1, VMA_DATA, VMA_STACK |
51 | }; |
52 | }; |
52 | 53 | ||
53 | /* |
54 | /* |
54 | * Each vm_area structure describes one continuous area of virtual memory. |
55 | * Each vm_area_t structure describes one continuous area of virtual memory. |
55 | * In the future, it should not be difficult to support shared areas of vm. |
56 | * In the future, it should not be difficult to support shared areas of vm. |
56 | */ |
57 | */ |
57 | struct vm_area { |
58 | struct vm_area { |
58 | spinlock_t lock; |
59 | spinlock_t lock; |
59 | link_t link; |
60 | link_t link; |
Line 62... | Line 63... | ||
62 | __address address; |
63 | __address address; |
63 | __address *mapping; |
64 | __address *mapping; |
64 | }; |
65 | }; |
65 | 66 | ||
66 | /* |
67 | /* |
67 | * vm_mapping_t contains the list of vm_areas of userspace accessible |
68 | * vm_t contains the list of vm_areas of userspace accessible |
68 | * pages for one or more tasks. Ranges of kernel memory pages are not |
69 | * pages for one or more tasks. Ranges of kernel memory pages are not |
69 | * supposed to figure in the list as they are shared by all tasks and |
70 | * supposed to figure in the list as they are shared by all tasks and |
70 | * set up during system initialization. |
71 | * set up during system initialization. |
71 | */ |
72 | */ |
72 | struct vm { |
73 | struct vm { |
73 | spinlock_t lock; |
74 | spinlock_t lock; |
74 | link_t vm_area_head; |
75 | link_t vm_area_head; |
- | 76 | int j; |
|
- | 77 | pte_t *ptl0; |
|
75 | }; |
78 | }; |
76 | 79 | ||
77 | extern vm_t * vm_create(void); |
80 | extern vm_t * vm_create(void); |
78 | extern void vm_destroy(vm_t *m); |
81 | extern void vm_destroy(vm_t *m); |
79 | 82 |