diff options
author | kib <kib@FreeBSD.org> | 2011-07-10 20:49:13 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2011-07-10 20:49:13 +0000 |
commit | e45048555adb06b1123f059988723f8045e9a527 (patch) | |
tree | 1244a5c3c59b391097dc596c103734a102504ea1 | |
parent | 315e379ec22f6c795e1c4237bdb108f9545baa50 (diff) | |
download | FreeBSD-src-e45048555adb06b1123f059988723f8045e9a527.zip FreeBSD-src-e45048555adb06b1123f059988723f8045e9a527.tar.gz |
Extract the code to translate VM error into errno, into an exported
function vm_mmap_to_errno(). It is useful for the drivers that implement
mmap(2)-like functionality, to be able to return error codes consistent
with mmap(2).
Sponsored by: The FreeBSD Foundation
No objections from: alc
MFC after: 1 week
-rw-r--r-- | sys/vm/vm_extern.h | 1 | ||||
-rw-r--r-- | sys/vm/vm_mmap.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/sys/vm/vm_extern.h b/sys/vm/vm_extern.h index 548cdb4..72f0254 100644 --- a/sys/vm/vm_extern.h +++ b/sys/vm/vm_extern.h @@ -72,6 +72,7 @@ int vm_fault_wire(vm_map_t, vm_offset_t, vm_offset_t, boolean_t); int vm_forkproc(struct thread *, struct proc *, struct thread *, struct vmspace *, int); void vm_waitproc(struct proc *); int vm_mmap(vm_map_t, vm_offset_t *, vm_size_t, vm_prot_t, vm_prot_t, int, objtype_t, void *, vm_ooffset_t); +int vm_mmap_to_errno(int rv); void vm_set_page_size(void); void vm_sync_icache(vm_map_t, vm_offset_t, vm_size_t); struct vmspace *vmspace_alloc(vm_offset_t, vm_offset_t); diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c index 0d1a8d7..c78571d 100644 --- a/sys/vm/vm_mmap.c +++ b/sys/vm/vm_mmap.c @@ -1535,6 +1535,13 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot, vm_map_wire(map, *addr, *addr + size, VM_MAP_WIRE_USER|VM_MAP_WIRE_NOHOLES); + return (vm_mmap_to_errno(rv)); +} + +int +vm_mmap_to_errno(int rv) +{ + switch (rv) { case KERN_SUCCESS: return (0); |