On Thu, Jul 25, 2013 at 1:52 PM, kernel neophyte <neophyte.hacker001@xxxxxxxxx> wrote: > ok, > > I am sorry maybe I did not ask the question correctly, all I want to know is > how mmap works underneath, given an address X how does kernel figure out its > a mmaped page ? > > -Neo > > > On Thu, Jul 25, 2013 at 10:04 AM, <Valdis.Kletnieks@xxxxxx> wrote: >> >> On Thu, 25 Jul 2013 09:14:03 -0700, kernel neophyte said: >> >> > Could anyone please explain, how mmap works underneath ? when kernel >> > traveses pgd->pud->pmd->pte how does it know that a particular page is a >> > mmaped page ? is there any special flag ? >> >> Why would the address mapping hardware even *care* that it's an mmap'ed >> page, once the mapping is set up? For that matter, why would most of >> the kernel code care? >> >> Only time an mmap'ed page is any different than any other process page is >> while the mmap is actually being set up, modified, or torn down. >> >> (And in fact, that's part of why getting the varions sync() calls to play >> nice with mmap() is so hard - because an mmap'ed file page is just a page. >> So noticing that a page got modified and knowing to do stuff like update >> the atime and mtime of the backing file is difficult...) >> Neo, First be aware this is bottom post only mailing list, as are most of the LKML lists, so if you are going to post on the public lists you will need to start bottom posting. As to your question, the more specific you are the better. There are 3 situations I can think of offhand, but I don't know which one you are interested in: 1) Userspace does a read/write to a data page that is not memory resident and the page is backed by a mmap'ed file. 2) Userspace does a read/write to a data page that is memory resident 3) The kernel decides a memory page is needed for another use and needs to be sync'ed to disk if any data updates are not to be lost. Valdis is saying for case 2) the kernel doesn't care. The kernel is not even in the loop. The userspace app has the memory pages available to it via the standard MMU mapping so the data accesses just work. The kernel in general only has to handle case 1) and case 3) Greg _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies