diff options
author | Maxime Henrion <mux@FreeBSD.org> | 2003-02-25 03:21:22 +0000 |
---|---|---|
committer | Maxime Henrion <mux@FreeBSD.org> | 2003-02-25 03:21:22 +0000 |
commit | 07159f9c56de91cb7d7bd6b6a795eebfee78133e (patch) | |
tree | a4ad6d456fdd984cdf9c6c6abd5e4654a9b7e3e0 /sys/dev/gfb/gfb_pci.c | |
parent | edf02ff15d952524ebf102c65a7b23e716259fe5 (diff) | |
download | src-07159f9c56de91cb7d7bd6b6a795eebfee78133e.tar.gz src-07159f9c56de91cb7d7bd6b6a795eebfee78133e.zip |
Cleanup of the d_mmap_t interface.
- Get rid of the useless atop() / pmap_phys_address() detour. The
device mmap handlers must now give back the physical address
without atop()'ing it.
- Don't borrow the physical address of the mapping in the returned
int. Now we properly pass a vm_offset_t * and expect it to be
filled by the mmap handler when the mapping was successful. The
mmap handler must now return 0 when successful, any other value
is considered as an error. Previously, returning -1 was the only
way to fail. This change thus accidentally fixes some devices
which were bogusly returning errno constants which would have been
considered as addresses by the device pager.
- Garbage collect the poorly named pmap_phys_address() now that it's
no longer used.
- Convert all the d_mmap_t consumers to the new API.
I'm still not sure wheter we need a __FreeBSD_version bump for this,
since and we didn't guarantee API/ABI stability until 5.1-RELEASE.
Discussed with: alc, phk, jake
Reviewed by: peter
Compile-tested on: LINT (i386), GENERIC (alpha and sparc64)
Runtime-tested on: i386
Notes
Notes:
svn path=/head/; revision=111462
Diffstat (limited to 'sys/dev/gfb/gfb_pci.c')
-rw-r--r-- | sys/dev/gfb/gfb_pci.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/gfb/gfb_pci.c b/sys/dev/gfb/gfb_pci.c index 3b3878146245..904f536a7cc0 100644 --- a/sys/dev/gfb/gfb_pci.c +++ b/sys/dev/gfb/gfb_pci.c @@ -313,12 +313,12 @@ pcigfb_ioctl(dev_t dev, u_long cmd, caddr_t arg, int flag, struct thread *td) } int -pcigfb_mmap(dev_t dev, vm_offset_t offset, int prot) +pcigfb_mmap(dev_t dev, vm_offset_t offset, vm_offset_t *paddr, int prot) { struct gfb_softc *sc; sc = (struct gfb_softc *)devclass_get_softc(gfb_devclass, minor(dev)); - return genfbmmap(&sc->gensc, sc->adp, offset, prot); + return genfbmmap(&sc->gensc, sc->adp, offset, paddr, prot); } #endif /*FB_INSTALL_CDEV*/ |