aboutsummaryrefslogtreecommitdiff
path: root/sys/sys/linedisc.h
diff options
context:
space:
mode:
authorMaxime Henrion <mux@FreeBSD.org>2003-02-25 03:21:22 +0000
committerMaxime Henrion <mux@FreeBSD.org>2003-02-25 03:21:22 +0000
commit07159f9c56de91cb7d7bd6b6a795eebfee78133e (patch)
treea4ad6d456fdd984cdf9c6c6abd5e4654a9b7e3e0 /sys/sys/linedisc.h
parentedf02ff15d952524ebf102c65a7b23e716259fe5 (diff)
downloadsrc-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/sys/linedisc.h')
-rw-r--r--sys/sys/linedisc.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/sys/linedisc.h b/sys/sys/linedisc.h
index 10d09d95b769..7be960f48b7d 100644
--- a/sys/sys/linedisc.h
+++ b/sys/sys/linedisc.h
@@ -157,7 +157,8 @@ typedef int d_read_t(dev_t dev, struct uio *uio, int ioflag);
typedef int d_write_t(dev_t dev, struct uio *uio, int ioflag);
typedef int d_poll_t(dev_t dev, int events, struct thread *td);
typedef int d_kqfilter_t(dev_t dev, struct knote *kn);
-typedef int d_mmap_t(dev_t dev, vm_offset_t offset, int nprot);
+typedef int d_mmap_t(dev_t dev, vm_offset_t offset, vm_offset_t *paddr,
+ int nprot);
typedef int l_open_t(dev_t dev, struct tty *tp);
typedef int l_close_t(struct tty *tp, int flag);