tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: UVM typedef struct


Sort answer:

I strongly support "typedef struct vm_page *vm_page_t".

Long answer:

I've been looking deeply into UVM pager and the fault routine.  I plan
to extend pagers to handle not only page cache but also non-cache
page, that is memory-mappable, directly-accessible page, like
character devices or NAND FlashROM.  To achieve this, I want pagers to
return a magic (struct vm_page *) to tell callers that "there is no
(struct vm_page *) object; we tell you my physical address other
way!".  Here (struct vm_page *) is actually a magic uintptr_t.

I think that there're many benefits by making struct vm_page opaque.
Its content is touched from ~everywhere including filesystem layers,
which violates abstraction.  I'd propose to make vm_page_t opaque and
make users to always use accessor routines.

If once vm_page_t internal is hidden, page handling would be much
extensible - locking improvements, accounting, or variable sized
pages, etc.


Home | Main Index | Thread Index | Old Index