Hello all,
How does the kernel determine when a page is unused? I see that
__get_free_pages() returns pages that have no refcount and no flags
indicating that they should not be reclaimed.
The first page that is returned looks like:
flags:0x80000000 mapping:00000000 mapcount:0 count:1
And the subsequent pages look like:
flags:0x80000000 mapping:00000000 mapcount:0 count:0
I am printing this out exactly the way bad_page() does. How does the
kernel know not to mess around with pages that have no refcount or any
flags to indicate that they are in use? I've already searched google
and checked a couple books, and couldn't find an answer.
Thanks in advance,
Avishay Traeger
On Thu, 29 Dec 2005, Avishay Traeger wrote:
> How does the kernel determine when a page is unused? I see that
> __get_free_pages() returns pages that have no refcount and no flags
> indicating that they should not be reclaimed.
>
> The first page that is returned looks like:
> flags:0x80000000 mapping:00000000 mapcount:0 count:1
>
> And the subsequent pages look like:
> flags:0x80000000 mapping:00000000 mapcount:0 count:0
>
> I am printing this out exactly the way bad_page() does. How does the
> kernel know not to mess around with pages that have no refcount or any
> flags to indicate that they are in use? I've already searched google
> and checked a couple books, and couldn't find an answer.
The kernel knows that a page is free if count == 0 in the first page.
All pages of a higher order allocation are managed through the status of
the first page.