diff options
author | vangyzen <vangyzen@FreeBSD.org> | 2015-10-02 14:36:41 +0000 |
---|---|---|
committer | vangyzen <vangyzen@FreeBSD.org> | 2015-10-02 14:36:41 +0000 |
commit | 8f32d0c83ec420d8944fbdbd6a323756c04c1546 (patch) | |
tree | 50f81cbd9709385229eb7c8ec9c23fe0614e7b02 /sys/vm | |
parent | 7b3b15b30002adb4bfb1e6836e4a76225fff3d6f (diff) | |
download | FreeBSD-src-8f32d0c83ec420d8944fbdbd6a323756c04c1546.zip FreeBSD-src-8f32d0c83ec420d8944fbdbd6a323756c04c1546.tar.gz |
MFC r283924
Provide vnode in memory map info for files on tmpfs
When providing memory map information to userland, populate the vnode pointer
for tmpfs files. Set the memory mapping to appear as a vnode type, to match
FreeBSD 9 behavior.
This fixes the use of tmpfs files with the dtrace pid provider,
procstat -v, procfs, linprocfs, pmc (pmcstat), and ptrace (PT_VM_ENTRY).
Submitted by: Eric Badger <eric@badgerio.us> (initial revision)
Obtained from: Dell Inc.
PR: 198431
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/vm_object.c | 12 | ||||
-rw-r--r-- | sys/vm/vm_object.h | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 54741ba..9d08714 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -2270,6 +2270,18 @@ next_page: } } +struct vnode * +vm_object_vnode(vm_object_t object) +{ + + VM_OBJECT_ASSERT_LOCKED(object); + if (object->type == OBJT_VNODE) + return (object->handle); + if (object->type == OBJT_SWAP && (object->flags & OBJ_TMPFS) != 0) + return (object->un_pager.swp.swp_tmpfs); + return (NULL); +} + static int sysctl_vm_object_list(SYSCTL_HANDLER_ARGS) { diff --git a/sys/vm/vm_object.h b/sys/vm/vm_object.h index 06111a1..ac8feae 100644 --- a/sys/vm/vm_object.h +++ b/sys/vm/vm_object.h @@ -297,6 +297,7 @@ boolean_t vm_object_sync(vm_object_t, vm_ooffset_t, vm_size_t, boolean_t, boolean_t); void vm_object_unwire(vm_object_t object, vm_ooffset_t offset, vm_size_t length, uint8_t queue); +struct vnode *vm_object_vnode(vm_object_t object); #endif /* _KERNEL */ #endif /* _VM_OBJECT_ */ |