Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Jul 2015 10:28:19 -0700
From:      John Baldwin <jhb@freebsd.org>
To:        Oliver Pinter <oliver.pinter@hardenedbsd.org>
Cc:        "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r283998 - in head/sys: dev/drm dev/drm2 fs/devfs kern sys vm
Message-ID:  <2301099.YseXhuPoWd@ralph.baldwin.cx>
In-Reply-To: <CAPQ4fft0RrG1UKXyp1kvqxD-9BaTFeTYpM5LEGL=yZw7brtk8Q@mail.gmail.com>
References:  <201506041941.t54JfGAA075455@svn.freebsd.org> <CAPQ4fft0RrG1UKXyp1kvqxD-9BaTFeTYpM5LEGL=yZw7brtk8Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, July 30, 2015 09:11:54 PM Oliver Pinter wrote:
> Hi John!
> 
> On Thu, Jun 4, 2015 at 9:41 PM, John Baldwin <jhb@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?

There's a regression reported by sbruno@ that needs to be resolved before it
can be merged.  I might also need to employ an extra hack to preserve the ABI
(e.g. adding a new flag that has to be set in the fileops to say that the
fo_mmap field is present like was done for fo_truncate).

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2301099.YseXhuPoWd>