linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* mmap() for a cluster of pages
@ 1998-10-26 11:44 Gilles Pokam
  1998-10-26 17:39 ` Benjamin C.R. LaHaise
  0 siblings, 1 reply; 6+ messages in thread
From: Gilles Pokam @ 1998-10-26 11:44 UTC (permalink / raw)
  To: Linux-MM

Hi,

I'm trying to developp my own driver. The problem is that i have to use a 
large amount of contiguous memory. For this purpose, in the __get_free_pages()
function, i use an order of 4 (for example).

I have implemented the mmap(), nopage(), open() and release() operations of 
the vma and file structures. Like mentionned in the book of Alessandro Rubini,
"Device Driver for Linux", when using more than one page size, the mmap()
is only able to mmap the first page of a page cluster.

I have tried to play with the usage count of the page, but i didn't succeed.
The problem is that, i don't think i have well understand what happens whith 
the usage count when a page cluster is mapped ! 

That is how i was thinking:
 I use __get_free_pages to allocates the memory, so the usage count of the 
 first page in the cluster is already incremented to 1, the rest are zero. 
 When mmap() calls the nopage() method to retrieve the faulting address, the 
 later also increments the usage count of the first page (count = 2).After
 that, by the next call, the whole block is unloaded because the count of the 
 other page are 0. So i have tried to increment the usage count of the other 
 page in the open() method, before the nopage() as been called due to a 
 faulting address, but it didn't help me! 

 What happens exactly by the call of the mmap() ? Which steps are involved and
 which function increments or decrements the usage count ? 

 I know for example that the whole block is unloaded after the first call 
 because the usage count of the other page are somewhere dropped to zero 
 (by the munmap ??), but i don't know when this step occurs during the mmap() 
 call.

 I will be very honor to receive some information about it.

  Thanx,
 
-- 
/_/_/_/_/_/_/_/_/_/_/_/_/_//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
  POKAM TIENTCHEU Gilles,                                     
  Technical University Berlin            | Room : FR 2068
  Secretariat FR 2-2                     | Voice: 030 - 314 73116
  Franklinstrasse 28/29 , D-10587 Berlin  | Email: pokam@cs.tu-berlin.de
/_/_/_/_/_/_/_/_/_/_/_/_/_//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

--
This is a majordomo managed list.  To unsubscribe, send a message with
the body 'unsubscribe linux-mm me@address' to: majordomo@kvack.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~1998-10-30 20:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-10-26 11:44 mmap() for a cluster of pages Gilles Pokam
1998-10-26 17:39 ` Benjamin C.R. LaHaise
1998-10-30 15:58   ` Stephen C. Tweedie
1998-10-30 18:57     ` Alan Cox
1998-10-30 19:18       ` Benjamin C.R. LaHaise
1998-10-30 20:34         ` Alan Cox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox