summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_conf.c
diff options
context:
space:
mode:
authorrnoland <rnoland@FreeBSD.org>2009-12-29 21:51:28 +0000
committerrnoland <rnoland@FreeBSD.org>2009-12-29 21:51:28 +0000
commit3dc3ad8568aae78c6c3ebad44e859a0feac05c38 (patch)
treeffed01a3f1f97aa245caf60848edab318a53aef9 /sys/kern/kern_conf.c
parentb8a003ef1beea7446e2328791d40c81ee37e8bb0 (diff)
downloadFreeBSD-src-3dc3ad8568aae78c6c3ebad44e859a0feac05c38.zip
FreeBSD-src-3dc3ad8568aae78c6c3ebad44e859a0feac05c38.tar.gz
Update d_mmap() to accept vm_ooffset_t and vm_memattr_t.
This replaces d_mmap() with the d_mmap2() implementation and also changes the type of offset to vm_ooffset_t. Purge d_mmap2(). All driver modules will need to be rebuilt since D_VERSION is also bumped. Reviewed by: jhb@ MFC after: Not in this lifetime...
Diffstat (limited to 'sys/kern/kern_conf.c')
-rw-r--r--sys/kern/kern_conf.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c
index e570fdd..f4510ac 100644
--- a/sys/kern/kern_conf.c
+++ b/sys/kern/kern_conf.c
@@ -302,7 +302,7 @@ static struct cdevsw dead_cdevsw = {
#define no_read (d_read_t *)enodev
#define no_write (d_write_t *)enodev
#define no_ioctl (d_ioctl_t *)enodev
-#define no_mmap (d_mmap2_t *)enodev
+#define no_mmap (d_mmap_t *)enodev
#define no_kqfilter (d_kqfilter_t *)enodev
#define no_mmap_single (d_mmap_single_t *)enodev
@@ -469,7 +469,7 @@ giant_kqfilter(struct cdev *dev, struct knote *kn)
}
static int
-giant_mmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot,
+giant_mmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr, int nprot,
vm_memattr_t *memattr)
{
struct cdevsw *dsw;
@@ -479,11 +479,8 @@ giant_mmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot,
if (dsw == NULL)
return (ENXIO);
mtx_lock(&Giant);
- if (dsw->d_gianttrick->d_flags & D_MMAP2)
- retval = dsw->d_gianttrick->d_mmap2(dev, offset, paddr, nprot,
- memattr);
- else
- retval = dsw->d_gianttrick->d_mmap(dev, offset, paddr, nprot);
+ retval = dsw->d_gianttrick->d_mmap(dev, offset, paddr, nprot,
+ memattr);
mtx_unlock(&Giant);
dev_relthread(dev);
return (retval);
@@ -595,8 +592,7 @@ prep_cdevsw(struct cdevsw *devsw)
return;
}
- if (devsw->d_version != D_VERSION_01 &&
- devsw->d_version != D_VERSION_02) {
+ if (devsw->d_version != D_VERSION_03) {
printf(
"WARNING: Device driver \"%s\" has wrong version %s\n",
devsw->d_name == NULL ? "???" : devsw->d_name,
@@ -608,18 +604,16 @@ prep_cdevsw(struct cdevsw *devsw)
devsw->d_ioctl = dead_ioctl;
devsw->d_poll = dead_poll;
devsw->d_mmap = dead_mmap;
+ devsw->d_mmap_single = dead_mmap_single;
devsw->d_strategy = dead_strategy;
devsw->d_dump = dead_dump;
devsw->d_kqfilter = dead_kqfilter;
}
- if (devsw->d_version == D_VERSION_01)
- devsw->d_mmap_single = NULL;
if (devsw->d_flags & D_NEEDGIANT) {
if (devsw->d_gianttrick == NULL) {
memcpy(dsw2, devsw, sizeof *dsw2);
devsw->d_gianttrick = dsw2;
- devsw->d_flags |= D_MMAP2;
dsw2 = NULL;
}
}
@@ -640,7 +634,7 @@ prep_cdevsw(struct cdevsw *devsw)
FIXUP(d_write, no_write, giant_write);
FIXUP(d_ioctl, no_ioctl, giant_ioctl);
FIXUP(d_poll, no_poll, giant_poll);
- FIXUP(d_mmap2, no_mmap, giant_mmap);
+ FIXUP(d_mmap, no_mmap, giant_mmap);
FIXUP(d_strategy, no_strategy, giant_strategy);
FIXUP(d_kqfilter, no_kqfilter, giant_kqfilter);
FIXUP(d_mmap_single, no_mmap_single, giant_mmap_single);
OpenPOWER on IntegriCloud