> > > What's pgo_get()? Since you seem to be immersed in UVM, you may be in a > > > good position to write the manual pages that it so badly lacks. Even if > > > you just jot some notes on each function, I can write the manual pages. > > > > UVM abstracts things that is mapped & put onto the main memory as > > "uvm_object". > > Most typically vnode. UVM doesn't know how those instances corresponds to > > their backends. When UVM wants to load those objects put onto memory, UVM > > asks its super class to get objects from backends. That's the pgo_get() > > operation. > > Do you mean subclass?
Classes are called "pager". Instances of pagers are uvm_object. Usually filesystem data is stored in a backend, then read from / write to there. tmpfs is special in that it doesn't have any on-disk format but just ask "aobj", another pager to manage data. "aobj" is a pager which allocates pages using swap as backing store. I've not understood well about layered uvm_objects like tmpfs. Especially about locking. tmpfs's pager returning underlying (lowermost?) layer's vm_page back to uvm_fault() still seems very odd to me. Probably such a thing was introduced after the original design of UVM? I need more thought... Masao
