Messages in this thread | | | From | "Stephen C. Tweedie" <> | Date | Tue, 9 Nov 1999 16:58:37 +0000 (GMT) | Subject | Re: locking user memory and kiobuf |
| |
Hi,
On Mon, 08 Nov 1999 11:27:26 -0500, Jeff Garzik <jgarzik@mandrakesoft.com> said:
> This is a question I still have unanswered: Does map_user_kiobuf indeed > map the VM into a _contiguous_ region of physical memory?
No. It creates a list of pointers to the various pages in the user's address range: it does not physically move any data. Think of the kiobuf as just a container object for the pages concerned.
> Note struct kiobuf includes an array of pages which causes some of my > confusion. Is it legal/possible to do:
> /* maps in four pages for read/write access */ > err = map_user_kiobuf (WRITE, iobuf, (ulong) vmaddr, PAGE_SIZE * 4);
> /* manipulate data in chunks greater than PAGE_SIZE */ > phys = page_address(iobuf->maplist[0]); > memcpy (foo, phys, PAGE_SIZE * 4);
No, never. A kiobuf is a container for individual pages. If they happen to be contiguous then you may be able to do some optimisations on those pages, but there is no guarantee that they will be.
--Stephen
- 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/
| |