• Hyeonggon Yoo's avatar
    mm, printk: introduce new format %pGt for page_type · 4c85c0be
    Hyeonggon Yoo authored
    %pGp format is used to display 'flags' field of a struct page.  However,
    some page flags (i.e.  PG_buddy, see page-flags.h for more details) are
    stored in page_type field.  To display human-readable output of page_type,
    introduce %pGt format.
    
    It is important to note the meaning of bits are different in page_type. 
    if page_type is 0xffffffff, no flags are set.  Setting PG_buddy
    (0x00000080) flag results in a page_type of 0xffffff7f.  Clearing a bit
    actually means setting a flag.  Bits in page_type are inverted when
    displaying type names.
    
    Only values for which page_type_has_type() returns true are considered as
    page_type, to avoid confusion with mapcount values.  if it returns false,
    only raw values are displayed and not page type names.
    
    Link: https://lkml.kernel.org/r/20230130042514.2418-3-42.hyeyoo@gmail.comSigned-off-by: default avatarHyeonggon Yoo <42.hyeyoo@gmail.com>
    Reviewed-by: Petr Mladek <pmladek@suse.com>	[vsprintf part]
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: John Ogness <john.ogness@linutronix.de>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
    Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    4c85c0be
printk-formats.rst 17.6 KB