kernel: Import vm_mmap_to_errno() from FreeBSD
authorFrançois Tigeot <ftigeot@wolfpond.org>
Sun, 21 Jul 2013 16:39:02 +0000 (18:39 +0200)
committerFrançois Tigeot <ftigeot@wolfpond.org>
Sun, 21 Jul 2013 16:39:43 +0000 (18:39 +0200)
sys/vm/vm_extern.h
sys/vm/vm_mmap.c

index f7fe105..89ee6a3 100644 (file)
@@ -105,6 +105,7 @@ void vm_wait_nominal (void);
 void vm_init_limits(struct proc *);
 
 int vm_mmap (vm_map_t, vm_offset_t *, vm_size_t, vm_prot_t, vm_prot_t, int, void *, vm_ooffset_t);
+int vm_mmap_to_errno(int rv);
 vm_offset_t kmem_alloc_contig (vm_offset_t, vm_paddr_t, vm_paddr_t, vm_offset_t);
 void vm_set_page_size (void);
 struct vmspace *vmspace_alloc (vm_offset_t, vm_offset_t);
index 0c62249..615a3a6 100644 (file)
@@ -1441,3 +1441,24 @@ out:
                return (EINVAL);
        }
 }
+
+/*
+ * Translate a Mach VM return code to zero on success or the appropriate errno
+ * on failure.
+ */
+int
+vm_mmap_to_errno(int rv)
+{
+
+       switch (rv) {
+       case KERN_SUCCESS:
+               return (0);
+       case KERN_INVALID_ADDRESS:
+       case KERN_NO_SPACE:
+               return (ENOMEM);
+       case KERN_PROTECTION_FAILURE:
+               return (EACCES);
+       default:
+               return (EINVAL);
+       }
+}