Re: Suspend 2 merge: 43/51: Utility functions.

Dave Hansen
2004-11-27T16:11:58Z

On Thu, 2004-11-25 at 16:04, Nigel Cunningham wrote:
> On Fri, 2004-11-26 at 10:46, Pavel Machek wrote:
> > How many bits do you need? Two? I'd rather use thow two bits than have
> > yet another abstraction. Also note that it is doing big order
> > allocation.
>
> Three if checksumming is enabled IIRC. I'll happily use normal page
> flags, but we only need them when suspending, and I understood they were
> rarer than hen's teeth :>
>
> MM guys copied so they can tell me I'm wrong :>

Please remember that, in almost all cases, any use of page->flags can be
replaced by a simple list. Is a page marked foo? Well, just traverse
this data structure and see if the page is in there. It might be a
stinking slow check, but it will *work*.

I think we're up to using 1 bit in the memory hotplug code, but we don't
even need that if some operations can be implemented more slowly.

An extreme example:

struct list_head foo;

int PageSuspendFoo(page)
{
ret = 0;
lock();
list_for_each(foo, bar) {
if (page == bar)
ret = 1;
}
unlock();
return ret;
}

-- Dave