* Where is PageHead defined in v5.0? @ 2019-03-27 22:26 Tobin C. Harding 2019-03-28 0:34 ` Jesse Simpson 0 siblings, 1 reply; 8+ messages in thread From: Tobin C. Harding @ 2019-03-27 22:26 UTC (permalink / raw) To: kernelnewbies Hi, I cannot locate the definition of PageHead? It seems to have disappeared after v4.0? I can see it defined as a function here: https://elixir.bootlin.com/linux/v4.0/source/include/linux/page-flags.h#L401 But on the mainline (v5.1-rc2) I get: $ git grep ' PageHead' include/linux/page-flags.h:int PageHeadHuge(struct page *page); include/linux/page-flags.h: return PageHead(page); include/linux/page-flags.h: return PageHead(page) && test_bit(PG_double_map, &page[1].flags); mm/hugetlb.c: return PageHead(page) && PagePrivate(&page[1]); mm/hugetlb.c: * PageHeadHuge() only returns true for hugetlbfs head page, but not for mm/hugetlb.c:int PageHeadHuge(struct page *page_head) Clearly it is defined _somewhere_. Anyone any idea what brain dysfunction I am having right now? thanks, Tobin. _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Where is PageHead defined in v5.0? 2019-03-27 22:26 Where is PageHead defined in v5.0? Tobin C. Harding @ 2019-03-28 0:34 ` Jesse Simpson 2019-03-27 23:49 ` Tobin C. Harding 0 siblings, 1 reply; 8+ messages in thread From: Jesse Simpson @ 2019-03-28 0:34 UTC (permalink / raw) To: Tobin C. Harding; +Cc: kernelnewbies 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. I'm looking on version 5.0.0. Good luck, Jesse Simpson On Thu, Mar 28, 2019 at 09:26:15AM +1100, Tobin C. Harding wrote: > Hi, > > I cannot locate the definition of PageHead? It seems to have > disappeared after v4.0? I can see it defined as a function here: > > https://elixir.bootlin.com/linux/v4.0/source/include/linux/page-flags.h#L401 > > But on the mainline (v5.1-rc2) I get: > > $ git grep ' PageHead' > include/linux/page-flags.h:int PageHeadHuge(struct page *page); > include/linux/page-flags.h: return PageHead(page); > include/linux/page-flags.h: return PageHead(page) && test_bit(PG_double_map, &page[1].flags); > mm/hugetlb.c: return PageHead(page) && PagePrivate(&page[1]); > mm/hugetlb.c: * PageHeadHuge() only returns true for hugetlbfs head page, but not for > mm/hugetlb.c:int PageHeadHuge(struct page *page_head) > > Clearly it is defined _somewhere_. Anyone any idea what brain > dysfunction I am having right now? > > thanks, > Tobin. > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Where is PageHead defined in v5.0? 2019-03-28 0:34 ` Jesse Simpson @ 2019-03-27 23:49 ` Tobin C. Harding 2019-03-28 0:23 ` Igor Pylypiv 0 siblings, 1 reply; 8+ messages in thread From: Tobin C. Harding @ 2019-03-27 23:49 UTC (permalink / raw) To: Jesse Simpson; +Cc: kernelnewbies 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@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Where is PageHead defined in v5.0? 2019-03-27 23:49 ` Tobin C. Harding @ 2019-03-28 0:23 ` Igor Pylypiv 2019-03-28 4:43 ` Tobin C. Harding 2019-03-28 5:50 ` Valdis Klētnieks 0 siblings, 2 replies; 8+ messages in thread From: Igor Pylypiv @ 2019-03-28 0:23 UTC (permalink / raw) To: Tobin C. Harding; +Cc: Jesse Simpson, kernelnewbies On Wed, Mar 27, 2019 at 4:51 PM Tobin C. Harding <me@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@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) See, it is simple :) Thanks, Igor _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Where is PageHead defined in v5.0? 2019-03-28 0:23 ` Igor Pylypiv @ 2019-03-28 4:43 ` Tobin C. Harding 2019-03-28 5:50 ` Valdis Klētnieks 1 sibling, 0 replies; 8+ messages in thread From: Tobin C. Harding @ 2019-03-28 4:43 UTC (permalink / raw) To: Igor Pylypiv; +Cc: Jesse Simpson, kernelnewbies 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@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@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 _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Where is PageHead defined in v5.0? 2019-03-28 0:23 ` Igor Pylypiv 2019-03-28 4:43 ` Tobin C. Harding @ 2019-03-28 5:50 ` Valdis Klētnieks 2019-03-28 20:49 ` Jesse Simpson 2019-03-28 20:56 ` Tobin C. Harding 1 sibling, 2 replies; 8+ messages in thread From: Valdis Klētnieks @ 2019-03-28 5:50 UTC (permalink / raw) To: Igor Pylypiv; +Cc: kernelnewbies, Jesse Simpson, Tobin C. Harding On Wed, 27 Mar 2019 17:23:05 -0700, Igor Pylypiv said: > 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) General tip: If you're trying to find where the kernel defines FooBar, and 'git grep FooBar' only finds uses and no definitions, it probably means somebody got over-exuberant with the ## pre-processor operator 'git grep Foo##' usually reveals the culprit. ;) _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Where is PageHead defined in v5.0? 2019-03-28 5:50 ` Valdis Klētnieks @ 2019-03-28 20:49 ` Jesse Simpson 2019-03-28 20:56 ` Tobin C. Harding 1 sibling, 0 replies; 8+ messages in thread From: Jesse Simpson @ 2019-03-28 20:49 UTC (permalink / raw) To: Valdis Klētnieks; +Cc: Igor Pylypiv, kernelnewbies, Tobin C. Harding On Thu, Mar 28, 2019 at 01:50:47AM -0400, Valdis Klētnieks wrote: > On Wed, 27 Mar 2019 17:23:05 -0700, Igor Pylypiv said: > > 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) > > General tip: If you're trying to find where the kernel defines FooBar, > and 'git grep FooBar' only finds uses and no definitions, it probably > means somebody got over-exuberant with the ## pre-processor > operator > > 'git grep Foo##' usually reveals the culprit. ;) Thanks for the tip Valdis. I'm going to look more into the ## operator so that I can understand it's use case better. I've used macros before but this one seems a bit strange. :) Jesse Simpson _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Where is PageHead defined in v5.0? 2019-03-28 5:50 ` Valdis Klētnieks 2019-03-28 20:49 ` Jesse Simpson @ 2019-03-28 20:56 ` Tobin C. Harding 1 sibling, 0 replies; 8+ messages in thread From: Tobin C. Harding @ 2019-03-28 20:56 UTC (permalink / raw) To: Valdis Klētnieks; +Cc: Igor Pylypiv, Jesse Simpson, kernelnewbies On Thu, Mar 28, 2019 at 01:50:47AM -0400, Valdis Klētnieks wrote: > On Wed, 27 Mar 2019 17:23:05 -0700, Igor Pylypiv said: > > 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) > > General tip: If you're trying to find where the kernel defines FooBar, > and 'git grep FooBar' only finds uses and no definitions, it probably > means somebody got over-exuberant with the ## pre-processor > operator > > 'git grep Foo##' usually reveals the culprit. ;) Awesome tip, thanks Valdis. _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-03-28 20:56 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-03-27 22:26 Where is PageHead defined in v5.0? Tobin C. Harding 2019-03-28 0:34 ` Jesse Simpson 2019-03-27 23:49 ` Tobin C. Harding 2019-03-28 0:23 ` Igor Pylypiv 2019-03-28 4:43 ` Tobin C. Harding 2019-03-28 5:50 ` Valdis Klētnieks 2019-03-28 20:49 ` Jesse Simpson 2019-03-28 20:56 ` Tobin C. Harding
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).