I thought this question should have been asked before; but I cannot find an answer despite several search attempts. So I ask.

I am curious about the apparent asymmetry in the naming convention of the "alloc_pages/__free_pages" and "__get_free_pages/free_pages" pairs.

The former pair works on "struct page" while the latter pair works on "unsigned long"

I understand that double-underscore prefixes "__" in kernel is a convention for reminder ("make sure you know what you are doing"); how does this convention apply to explain the apparent asymmetry?

Wei.