Where is PageHead defined in v5.0?

Tobin C. Harding me at tobin.cc
Thu Mar 28 00:43:12 EDT 2019


On Wed, Mar 27, 2019 at 05:23:05PM -0700, Igor Pylypiv wrote:
> On Wed, Mar 27, 2019 at 4:51 PM Tobin C. Harding <me at tobin.cc> wrote:
> >
> > On Wed, Mar 27, 2019 at 07:34:58PM -0500, Jesse Simpson wrote:
> > > Hi Tobin,
> > >
> > > I took a look on my system, and I wasn't able to find where PageHead is
> > > defined either. I used grep to search for it as well as vim with ctags.
> > > Maybe it's hidden away in some built-in.a or binary file.
> >
> > Cheers Jesse, confirmation that I've not gone mad - that's a win.
> >
> > I'll repost this to mm-linux tomorrow if no one on here knows.
> >
> > thanks,
> > Tobin.
> >
> > _______________________________________________
> > Kernelnewbies mailing list
> > Kernelnewbies at kernelnewbies.org
> > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
> 
> Hi Tobin and Jesse,
> 
> Neither grep nor ctags are going to help you here :)
> 
> PageHead is implicitly defined using macros __PAGEFLAG:
>         __PAGEFLAG(Head, head, PF_ANY) CLEARPAGEFLAG(Head, head, PF_ANY)
>         (https://elixir.bootlin.com/linux/v5.0.5/source/include/linux/page-flags.h#L517)
> 
> __PAGEFLAG defines TESTPAGEFLAG:
>         (https://elixir.bootlin.com/linux/v5.0.5/source/include/linux/page-flags.h#L248)
> 
> and TESTPAGEFLAG defines PageHead:
>         #define TESTPAGEFLAG(uname, lname, policy) \
>         static __always_inline int Page##uname(struct page *page)
>         (https://elixir.bootlin.com/linux/v5.0.5/source/include/linux/page-flags.h#L215)

Thanks Igor.

> See, it is simple :)

hmmm macros - no further comment needed :)


thanks
Tobin



More information about the Kernelnewbies mailing list