Messages in this thread | | | Date | Tue, 03 Aug 1999 08:29:25 -0400 | From | Douglas Gilbert <> | Subject | Re: Locking memory |
| |
Peter Desnoyers wrote: > thomas.putnam@natinst.com wrote: > > > > Actually, I've been looking for a way to lock down chunks of user memory from > > within the driver I'm writing without the permission check in mlock. Is there a > > clean, exported interface to this? > > I have to do the same thing, and I'm doing it by incrementing the count > in the page table with mem_map_inc_count(). Mlock takes the opposite > approach, modifying the virtual memory areas. I'm not sure which is the > right approach - I'm suspicious of the approach I've used as I end up > having to do a read/write on each page to properly handle copy-on-write, > but I don't know enough about VMAs to feel confident taking the mlock > approach. > > I assume that the reason you're looking to do this is similar to mine - > allowing the user to register a buffer which the hardware DMAs into, and > which can then be read directly from user space. This is the opposite of > the approach taken by the sound drivers I've skimmed through, which seem > to allocate pages in the kernel, set the reserved bit in the page table, > and then let the user code mmap them. That's probably partly because > the sound cards need physically contiguous pages for DMA, while my device > (and yours?) can do scatter/gather.
Stephen Tweedie's raw_io work is in 2.3.12 and does a large amount of work in this area. Have a look at include/linux/iobuf.h and the related files.
Doug Gilbert
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |