<div dir="ltr"><div><div>Hello all,<br><br></div>I am investigating alternative ways of swapping memory. For my purposes I have a kernel module that emulates a device in which I can write memory pages temporarily. <br><br><br></div><div>I have two events that I m interested in, both of them might occur during the page fault handling. The first case is sending the victim page (more accurately the victim pages of a vm_area_struct) during a page fault to this device instead of the disk. At this time a special flag will be set that will mark the pages of the memory region as present to the particular device. The second case is when, during a page fault I find out that the pages I m looking for are located to the device, and I need to bring them back to the main memory (as I would with normal swapping in). <br><br></div><div>I&#39;m working with kernel 2.6.32 and I ve read quite a lot in Understanding the Linux Kernel (there are some slight changes to the memory subsystem comparing to the 2.6.11 that the book presents) and I think I know where I should hook my code. <br><br></div><div>For now I m only interested in the kind of memory that is allocated through a malloc or an mmap with anonymous mapping from the user space, not file mappings, DMA or kernel data.<br></div><div><br></div><div>My question is:<br><br></div><div>Which is the cleanest way to do so? Is there a way to do it, using a module and not touching kernel code? Are there any hooks to that part of the memory subsystem? (From what I was able to understand, there is not an interface that allows me to alter the way page faults are handled).<br><br> <br></div></div>