Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/vfs_vnops.c
Show First 20 Lines • Show All 81 Lines • ▼ Show 20 Lines | |||||
#include <security/mac/mac_framework.h> | #include <security/mac/mac_framework.h> | ||||
#include <vm/vm.h> | #include <vm/vm.h> | ||||
#include <vm/vm_extern.h> | #include <vm/vm_extern.h> | ||||
#include <vm/pmap.h> | #include <vm/pmap.h> | ||||
#include <vm/vm_map.h> | #include <vm/vm_map.h> | ||||
#include <vm/vm_object.h> | #include <vm/vm_object.h> | ||||
#include <vm/vm_page.h> | #include <vm/vm_page.h> | ||||
#include <vm/vnode_pager.h> | #include <vm/vm_pager.h> | ||||
#ifdef HWPMC_HOOKS | #ifdef HWPMC_HOOKS | ||||
#include <sys/pmckern.h> | #include <sys/pmckern.h> | ||||
#endif | #endif | ||||
static fo_rdwr_t vn_read; | static fo_rdwr_t vn_read; | ||||
static fo_rdwr_t vn_write; | static fo_rdwr_t vn_write; | ||||
static fo_rdwr_t vn_io_fault; | static fo_rdwr_t vn_io_fault; | ||||
▲ Show 20 Lines • Show All 2,398 Lines • ▼ Show 20 Lines | #endif | ||||
error = vm_mmap_object(map, addr, size, prot, maxprot, flags, object, | error = vm_mmap_object(map, addr, size, prot, maxprot, flags, object, | ||||
foff, writecounted, td); | foff, writecounted, td); | ||||
if (error != 0) { | if (error != 0) { | ||||
/* | /* | ||||
* If this mapping was accounted for in the vnode's | * If this mapping was accounted for in the vnode's | ||||
* writecount, then undo that now. | * writecount, then undo that now. | ||||
*/ | */ | ||||
if (writecounted) | if (writecounted) | ||||
vnode_pager_release_writecount(object, 0, size); | vm_pager_release_writecount(object, 0, size); | ||||
vm_object_deallocate(object); | vm_object_deallocate(object); | ||||
} | } | ||||
#ifdef HWPMC_HOOKS | #ifdef HWPMC_HOOKS | ||||
/* Inform hwpmc(4) if an executable is being mapped. */ | /* Inform hwpmc(4) if an executable is being mapped. */ | ||||
if (PMC_HOOK_INSTALLED(PMC_FN_MMAP)) { | if (PMC_HOOK_INSTALLED(PMC_FN_MMAP)) { | ||||
if ((prot & VM_PROT_EXECUTE) != 0 && error == 0) { | if ((prot & VM_PROT_EXECUTE) != 0 && error == 0) { | ||||
pkm.pm_file = vp; | pkm.pm_file = vp; | ||||
pkm.pm_address = (uintptr_t) *addr; | pkm.pm_address = (uintptr_t) *addr; | ||||
▲ Show 20 Lines • Show All 581 Lines • Show Last 20 Lines |