Re: [PATCH 0/13] maps: pagemap, kpagemap, and related cleanups

Nick Piggin
2007-04-13T00:15:38Z

Andrew Morton wrote:
> On Thu, 12 Apr 2007 16:10:50 -0700
> William Lee Irwin III <wli@holomorphy.com> wrote:

>>+ while (count > 0) {
>>+ chunk = min_t(size_t, count, PAGE_SIZE);
>>+ i = 0;
>>+
>>+ if (pfn == -1) {
>>+ page[0] = 0;
>>+ page[1] = 0;
>>+ ((char *)page)[0] = (ntohl(1) != 1);
>
>
> OK.
>
>
>>+ ((char *)page)[1] = PAGE_SHIFT;
>
>
> OK.

Shouldn't we just expose page size and endianness by other means? (another file or
syscall).

>>+ for (; i < 2 * chunk / KPMSIZE; i += 2, pfn++) {
>>+ ppage = pfn_to_page(pfn);
>>+ if (!ppage) {
>>+ page[i] = 0;
>>+ page[i + 1] = 0;
>>+ } else {
>>+ page[i] = ppage->flags;
>>+ page[i + 1] = atomic_read(&ppage->_count);
>>+ }
>>+ }
>
>
> Not a good idea to expose raw flags in this manner - it changes at the drop
> of a hat. We'd need to also expose the kernel's PG_foo-to-bitnumber
> mapping to make this viable.

I don't think it is viable because that makes the flags part of the
userspace ABI. I wonder what they are needed for.

--
SUSE Labs, Novell Inc.