diff options
author | rnoland <rnoland@FreeBSD.org> | 2009-12-29 21:51:28 +0000 |
---|---|---|
committer | rnoland <rnoland@FreeBSD.org> | 2009-12-29 21:51:28 +0000 |
commit | 3dc3ad8568aae78c6c3ebad44e859a0feac05c38 (patch) | |
tree | ffed01a3f1f97aa245caf60848edab318a53aef9 /sys/kern | |
parent | b8a003ef1beea7446e2328791d40c81ee37e8bb0 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/kern/kern_conf.c | 20 | ||||
-rw-r--r-- | sys/kern/subr_devstat.c | 3 | ||||
-rw-r--r-- | sys/kern/tty.c | 9 |
3 files changed, 14 insertions, 18 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); diff --git a/sys/kern/subr_devstat.c b/sys/kern/subr_devstat.c index e90df59..a214bf6 100644 --- a/sys/kern/subr_devstat.c +++ b/sys/kern/subr_devstat.c @@ -449,7 +449,8 @@ static TAILQ_HEAD(, statspage) pagelist = TAILQ_HEAD_INITIALIZER(pagelist); static MALLOC_DEFINE(M_DEVSTAT, "devstat", "Device statistics"); static int -devstat_mmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot) +devstat_mmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr, + int nprot, vm_memattr_t *memattr) { struct statspage *spp; diff --git a/sys/kern/tty.c b/sys/kern/tty.c index 9ef095c..05b8a37 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -603,7 +603,8 @@ ttydev_poll(struct cdev *dev, int events, struct thread *td) } static int -ttydev_mmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot) +ttydev_mmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr, + int nprot, vm_memattr_t *memattr) { struct tty *tp = dev->si_drv1; int error; @@ -613,7 +614,7 @@ ttydev_mmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot) error = ttydev_enter(tp); if (error) return (-1); - error = ttydevsw_mmap(tp, offset, paddr, nprot); + error = ttydevsw_mmap(tp, offset, paddr, nprot, memattr); tty_unlock(tp); return (error); @@ -905,8 +906,8 @@ ttydevsw_defmodem(struct tty *tp, int sigon, int sigoff) } static int -ttydevsw_defmmap(struct tty *tp, vm_offset_t offset, vm_paddr_t *paddr, - int nprot) +ttydevsw_defmmap(struct tty *tp, vm_ooffset_t offset, vm_paddr_t *paddr, + int nprot, vm_memattr_t *memattr) { return (-1); |