From 07159f9c56de91cb7d7bd6b6a795eebfee78133e Mon Sep 17 00:00:00 2001 From: Maxime Henrion Date: Tue, 25 Feb 2003 03:21:22 +0000 Subject: 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 --- sys/dev/bktr/bktr_os.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'sys/dev/bktr') diff --git a/sys/dev/bktr/bktr_os.c b/sys/dev/bktr/bktr_os.c index 4aae13cdf35f..7c7f9a12f685 100644 --- a/sys/dev/bktr/bktr_os.c +++ b/sys/dev/bktr/bktr_os.c @@ -753,7 +753,7 @@ bktr_ioctl( dev_t dev, ioctl_cmd_t cmd, caddr_t arg, int flag, struct thread *td * */ static int -bktr_mmap( dev_t dev, vm_offset_t offset, int nprot ) +bktr_mmap( dev_t dev, vm_offset_t offset, vm_offset_t *paddr, int nprot ) { int unit; bktr_ptr_t bktr; @@ -779,7 +779,8 @@ bktr_mmap( dev_t dev, vm_offset_t offset, int nprot ) if (offset >= bktr->alloc_pages * PAGE_SIZE) return( -1 ); - return( atop(vtophys(bktr->bigbuf) + offset) ); + *paddr = vtophys(bktr->bigbuf) + offset; + return( 0 ); } static int -- cgit v1.3