>>>>> "Nat" == Nat Ersoz <nat.ersoz@myrio.com> writes: Nat> He references the char/mem.c device driver in the linux kernel, Nat> and using that code provides an example of phsyical memory Nat> mapping to a process virtual address. The code I'm interested in Nat> is attached to the bottom. Specifically, I'm confused as to the Nat> usage of the line of code: Nat> /* Don't try to swap out physical pages.. */ vma-> vm_flags |= VM_RESERVED; Nat> I want to do this in my own code: map a physical device page of Nat> memory to user space, and be sure its not swapped out. What Nat> confuses me is that vma->vm_flags never seems to get used by any Nat> of char/mem.c or any or Rubini's discussion examples. Nat> Does this code actually do anything? Can someone explain how? It does, e.g. see swap_out_pmd below: /* mm->page_table_lock is held. mmap_sem is not held */ static inline int swap_out_pmd(struct mm_struct * mm, struct vm_area_struct * vma, pmd_t *dir, unsigned long address, unsigned long end, int count, zone_t * classzone) { [...] do { if (pte_present(*pte)) { struct page *page = pte_page(*pte); if (VALID_PAGE(page) && !PageReserved(page)) { count -= try_to_swap_out(mm, vma, address, pte, page, classzone); [...] } } address += PAGE_SIZE; pte++; } while (address && (address < end)); mm->swap_address = address; return count; } -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ IRC Channel: irc.openprojects.net / #kernelnewbies Web Page: http://www.kernelnewbies.org/