Removes kref_next
[akaros.git] / kern / include / mm.h
index 3ffb02a..cf1affa 100644 (file)
@@ -59,13 +59,13 @@ struct vm_region *find_vmr(struct proc *p, uintptr_t va);
 struct vm_region *find_first_vmr(struct proc *p, uintptr_t va);
 void isolate_vmrs(struct proc *p, uintptr_t va, size_t len);
 void destroy_vmrs(struct proc *p);
-void duplicate_vmrs(struct proc *p, struct proc *new_p);
+int duplicate_vmrs(struct proc *p, struct proc *new_p);
 void print_vmrs(struct proc *p);
 
 /* mmap() related functions.  These manipulate VMRs and change the hardware page
  * tables.  Any requests below the LOWEST_VA will silently be upped.  This may
  * be a dynamic proc-specific variable later. */
-#define MMAP_LOWEST_VA 0x00001000
+#define MMAP_LOWEST_VA PGSIZE
 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,
@@ -74,7 +74,7 @@ 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);
 int __do_mprotect(struct proc *p, uintptr_t addr, size_t len, int prot);
@@ -89,5 +89,8 @@ uintptr_t put_vmap_segment(uintptr_t vaddr, unsigned long num_pages);
 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);
+/* Helper wrappers, since no one will probably call the *_segment funcs */
+uintptr_t vmap_pmem(uintptr_t paddr, size_t nr_bytes);
+int vunmap_vmem(uintptr_t vaddr, size_t nr_bytes);
 
 #endif /* !ROS_KERN_MM_H */