Messages in this thread | | | Date | Fri, 15 Feb 2013 13:27:38 -0800 | From | Andrew Morton <> | Subject | Re: [patch 1/2] mm: fincore() |
| |
On Fri, 15 Feb 2013 01:34:50 -0500 Johannes Weiner <hannes@cmpxchg.org> wrote:
> + * The status is returned in a vector of bytes. The least significant > + * bit of each byte is 1 if the referenced page is in memory, otherwise > + * it is zero.
Also, this is going to be dreadfully inefficient for some obvious cases.
We could address that by returning the info in some more efficient representation. That will be run-length encoded in some fashion.
The obvious way would be to populate an array of
struct page_status { u32 present:1; u32 count:31; };
or whatever.
Another way would be to define the syscall so it returns "number of pages present/absent starting at offset `start'". In other words, one call to fincore() will return a single `struct page_status'. Userspace can then walk through the file and generate the full picture, if needed.
This also gets inefficient in obvious cases, but it's not as obviously bad?
| |