svn commit: r283998 - in head/sys: dev/drm dev/drm2 fs/devfs kern sys vm

Oliver Pinter oliver.pinter at hardenedbsd.org
Thu Jul 30 19:12:03 UTC 2015


Hi John!

On Thu, Jun 4, 2015 at 9:41 PM, John Baldwin <jhb at freebsd.org> wrote:
> Author: jhb
> Date: Thu Jun  4 19:41:15 2015
> New Revision: 283998
> URL: https://svnweb.freebsd.org/changeset/base/283998
>
> Log:
>   Add a new file operations hook for mmap operations.  File type-specific
>   logic is now placed in the mmap hook implementation rather than requiring
>   it to be placed in sys/vm/vm_mmap.c.  This hook allows new file types to
>   support mmap() as well as potentially allowing mmap() for existing file
>   types that do not currently support any mapping.
>
>   The vm_mmap() function is now split up into two functions.  A new
>   vm_mmap_object() function handles the "back half" of vm_mmap() and accepts
>   a referenced VM object to map rather than a (handle, handle_type) tuple.
>   vm_mmap() is now reduced to converting a (handle, handle_type) tuple to a
>   a VM object and then calling vm_mmap_object() to handle the actual mapping.
>   The vm_mmap() function remains for use by other parts of the kernel
>   (e.g. device drivers and exec) but now only supports mapping vnodes,
>   character devices, and anonymous memory.
>
>   The mmap() system call invokes vm_mmap_object() directly with a NULL object
>   for anonymous mappings.  For mappings using a file descriptor, the
>   descriptors fo_mmap() hook is invoked instead.  The fo_mmap() hook is
>   responsible for performing type-specific checks and adjustments to
>   arguments as well as possibly modifying mapping parameters such as flags
>   or the object offset.  The fo_mmap() hook routines then call
>   vm_mmap_object() to handle the actual mapping.
>
>   The fo_mmap() hook is optional.  If it is not set, then fo_mmap() will
>   fail with ENODEV.  A fo_mmap() hook is implemented for regular files,
>   character devices, and shared memory objects (created via shm_open()).
>
>   While here, consistently use the VM_PROT_* constants for the vm_prot_t
>   type for the 'prot' variable passed to vm_mmap() and vm_mmap_object()
>   as well as the vm_mmap_vnode() and vm_mmap_cdev() helper routines.
>   Previously some places were using the mmap()-specific PROT_* constants
>   instead.  While this happens to work because PROT_xx == VM_PROT_xx,
>   using VM_PROT_* is more correct.
>
>   Differential Revision:        https://reviews.freebsd.org/D2658
>   Reviewed by:  alc (glanced over), kib
>   MFC after:    1 month
>   Sponsored by: Chelsio
>
> Modified:
>   head/sys/dev/drm/drm_bufs.c
>   head/sys/dev/drm2/drm_bufs.c
>   head/sys/fs/devfs/devfs_vnops.c
>   head/sys/kern/subr_uio.c
>   head/sys/kern/uipc_shm.c
>   head/sys/kern/vfs_vnops.c
>   head/sys/sys/file.h
>   head/sys/sys/mman.h
>   head/sys/vm/vm_extern.h
>   head/sys/vm/vm_mmap.c
>

> ... patch trimmed...

When plan you to MFC this change to 10-STABLE?

Thank,
Oliver

> _______________________________________________
> svn-src-head at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"


More information about the svn-src-head mailing list