Breaks up the proc_lock to use the mm_lock
[akaros.git] / kern / include / mm.h
index bcc5b52..547ab76 100644 (file)
@@ -9,6 +9,7 @@
 #define ROS_KERN_MM_H
 
 #include <ros/common.h>
+#include <ros/mman.h>
 #include <atomic.h>
 #include <sys/queue.h>
 #include <slab.h>
@@ -68,16 +69,25 @@ void print_vmrs(struct proc *p);
 void *mmap(struct proc *p, uintptr_t addr, size_t len, int prot, int flags,
            int fd, size_t offset);
 void *do_mmap(struct proc *p, uintptr_t addr, size_t len, int prot, int flags,
-             struct file *f, size_t offset);
+              struct file *f, size_t offset);
 int mprotect(struct proc *p, uintptr_t addr, size_t len, int prot);
 int munmap(struct proc *p, uintptr_t addr, size_t len);
 int handle_page_fault(struct proc *p, uintptr_t va, int prot);
 
-/* These assume the memory/proc_lock is held already */
+/* These assume the mm_lock is held already */
 void *__do_mmap(struct proc *p, uintptr_t addr, size_t len, int prot, int flags,
-               struct file *f, size_t offset);
+                struct file *f, size_t offset);
 int __do_mprotect(struct proc *p, uintptr_t addr, size_t len, int prot);
 int __do_munmap(struct proc *p, uintptr_t addr, size_t len);
 int __handle_page_fault(struct proc* p, uintptr_t va, int prot);
 
+/* Kernel Dynamic Memory Mappings */
+/* These two are just about reserving VA space */
+uintptr_t get_vmap_segment(unsigned long num_pages);
+uintptr_t put_vmap_segment(uintptr_t vaddr, unsigned long num_pages);
+/* These two are about actually mapping stuff in some reserved space */
+int map_vmap_segment(uintptr_t vaddr, uintptr_t paddr, unsigned long num_pages,
+                     int perm);
+int unmap_vmap_segment(uintptr_t vaddr, unsigned long num_pages);
+
 #endif /* !ROS_KERN_MM_H */