xref: /openbmc/linux/include/trace/events/mmflags.h (revision c1e01cdbe0312d95b8c1542abd67fe786b534f57)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2aff28015SMichal Hocko #include <linux/node.h>
3aff28015SMichal Hocko #include <linux/mmzone.h>
4aff28015SMichal Hocko #include <linux/compaction.h>
5420adbe9SVlastimil Babka /*
6420adbe9SVlastimil Babka  * The order of these masks is important. Matching masks will be seen
7420adbe9SVlastimil Babka  * first and the left over flags will end up showing by themselves.
8420adbe9SVlastimil Babka  *
9420adbe9SVlastimil Babka  * For example, if we have GFP_KERNEL before GFP_USER we wil get:
10420adbe9SVlastimil Babka  *
11420adbe9SVlastimil Babka  *  GFP_KERNEL|GFP_HARDWALL
12420adbe9SVlastimil Babka  *
13420adbe9SVlastimil Babka  * Thus most bits set go first.
14420adbe9SVlastimil Babka  */
15420adbe9SVlastimil Babka 
16185194f1SVasily Averin #define gfpflag_string(flag) {(__force unsigned long)flag, #flag}
17185194f1SVasily Averin 
18420adbe9SVlastimil Babka #define __def_gfpflag_names			\
19185194f1SVasily Averin 	gfpflag_string(GFP_TRANSHUGE),		\
20185194f1SVasily Averin 	gfpflag_string(GFP_TRANSHUGE_LIGHT),	\
21185194f1SVasily Averin 	gfpflag_string(GFP_HIGHUSER_MOVABLE),	\
22185194f1SVasily Averin 	gfpflag_string(GFP_HIGHUSER),		\
23185194f1SVasily Averin 	gfpflag_string(GFP_USER),		\
24185194f1SVasily Averin 	gfpflag_string(GFP_KERNEL_ACCOUNT),	\
25185194f1SVasily Averin 	gfpflag_string(GFP_KERNEL),		\
26185194f1SVasily Averin 	gfpflag_string(GFP_NOFS),		\
27185194f1SVasily Averin 	gfpflag_string(GFP_ATOMIC),		\
28185194f1SVasily Averin 	gfpflag_string(GFP_NOIO),		\
29185194f1SVasily Averin 	gfpflag_string(GFP_NOWAIT),		\
30185194f1SVasily Averin 	gfpflag_string(GFP_DMA),		\
31185194f1SVasily Averin 	gfpflag_string(__GFP_HIGHMEM),		\
32185194f1SVasily Averin 	gfpflag_string(GFP_DMA32),		\
33185194f1SVasily Averin 	gfpflag_string(__GFP_HIGH),		\
34185194f1SVasily Averin 	gfpflag_string(__GFP_IO),		\
35185194f1SVasily Averin 	gfpflag_string(__GFP_FS),		\
36185194f1SVasily Averin 	gfpflag_string(__GFP_NOWARN),		\
37185194f1SVasily Averin 	gfpflag_string(__GFP_RETRY_MAYFAIL),	\
38185194f1SVasily Averin 	gfpflag_string(__GFP_NOFAIL),		\
39185194f1SVasily Averin 	gfpflag_string(__GFP_NORETRY),		\
40185194f1SVasily Averin 	gfpflag_string(__GFP_COMP),		\
41185194f1SVasily Averin 	gfpflag_string(__GFP_ZERO),		\
42185194f1SVasily Averin 	gfpflag_string(__GFP_NOMEMALLOC),	\
43185194f1SVasily Averin 	gfpflag_string(__GFP_MEMALLOC),		\
44185194f1SVasily Averin 	gfpflag_string(__GFP_HARDWALL),		\
45185194f1SVasily Averin 	gfpflag_string(__GFP_THISNODE),		\
46185194f1SVasily Averin 	gfpflag_string(__GFP_RECLAIMABLE),	\
47185194f1SVasily Averin 	gfpflag_string(__GFP_MOVABLE),		\
48185194f1SVasily Averin 	gfpflag_string(__GFP_ACCOUNT),		\
49185194f1SVasily Averin 	gfpflag_string(__GFP_WRITE),		\
50185194f1SVasily Averin 	gfpflag_string(__GFP_RECLAIM),		\
51185194f1SVasily Averin 	gfpflag_string(__GFP_DIRECT_RECLAIM),	\
52185194f1SVasily Averin 	gfpflag_string(__GFP_KSWAPD_RECLAIM),	\
53185194f1SVasily Averin 	gfpflag_string(__GFP_ZEROTAGS)
54f49d9c5bSAndrey Konovalov 
55f49d9c5bSAndrey Konovalov #ifdef CONFIG_KASAN_HW_TAGS
5653ae233cSAndrey Konovalov #define __def_gfpflag_names_kasan ,			\
57185194f1SVasily Averin 	gfpflag_string(__GFP_SKIP_ZERO),		\
580a54864fSPeter Collingbourne 	gfpflag_string(__GFP_SKIP_KASAN)
59f49d9c5bSAndrey Konovalov #else
60f49d9c5bSAndrey Konovalov #define __def_gfpflag_names_kasan
61f49d9c5bSAndrey Konovalov #endif
62420adbe9SVlastimil Babka 
63420adbe9SVlastimil Babka #define show_gfp_flags(flags)						\
64420adbe9SVlastimil Babka 	(flags) ? __print_flags(flags, "|",				\
65f49d9c5bSAndrey Konovalov 	__def_gfpflag_names __def_gfpflag_names_kasan			\
66420adbe9SVlastimil Babka 	) : "none"
67420adbe9SVlastimil Babka 
68420adbe9SVlastimil Babka #ifdef CONFIG_MMU
69e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_MLOCK(_name) ,{1UL << PG_##_name, __stringify(_name)}
70420adbe9SVlastimil Babka #else
71e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_MLOCK(_name)
72420adbe9SVlastimil Babka #endif
73420adbe9SVlastimil Babka 
74420adbe9SVlastimil Babka #ifdef CONFIG_ARCH_USES_PG_UNCACHED
75e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_UNCACHED(_name) ,{1UL << PG_##_name, __stringify(_name)}
76420adbe9SVlastimil Babka #else
77e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_UNCACHED(_name)
78420adbe9SVlastimil Babka #endif
79420adbe9SVlastimil Babka 
80420adbe9SVlastimil Babka #ifdef CONFIG_MEMORY_FAILURE
81e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_HWPOISON(_name) ,{1UL << PG_##_name, __stringify(_name)}
82420adbe9SVlastimil Babka #else
83e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_HWPOISON(_name)
84420adbe9SVlastimil Babka #endif
85420adbe9SVlastimil Babka 
861c676e0dSSeongJae Park #if defined(CONFIG_PAGE_IDLE_FLAG) && defined(CONFIG_64BIT)
87e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_IDLE(_name) ,{1UL << PG_##_name, __stringify(_name)}
88420adbe9SVlastimil Babka #else
89e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_IDLE(_name)
90420adbe9SVlastimil Babka #endif
91420adbe9SVlastimil Babka 
92b0284cd2SCatalin Marinas #ifdef CONFIG_ARCH_USES_PG_ARCH_X
93e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_ARCH_X(_name) ,{1UL << PG_##_name, __stringify(_name)}
944beba948SSteven Price #else
95e26fcc02SHyeonggon Yoo #define IF_HAVE_PG_ARCH_X(_name)
964beba948SSteven Price #endif
974beba948SSteven Price 
98e26fcc02SHyeonggon Yoo #define DEF_PAGEFLAG_NAME(_name) { 1UL <<  PG_##_name, __stringify(_name) }
99e26fcc02SHyeonggon Yoo 
100420adbe9SVlastimil Babka #define __def_pageflag_names						\
101e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(locked),					\
102e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(waiters),					\
103e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(error),					\
104e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(referenced),					\
105e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(uptodate),					\
106e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(dirty),					\
107e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(lru),						\
108e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(active),					\
109e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(workingset),					\
110e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(slab),					\
111e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(owner_priv_1),				\
112e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(arch_1),					\
113e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(reserved),					\
114e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(private),					\
115e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(private_2),					\
116e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(writeback),					\
117e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(head),					\
118e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(mappedtodisk),				\
119e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(reclaim),					\
120e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(swapbacked),					\
121e26fcc02SHyeonggon Yoo 	DEF_PAGEFLAG_NAME(unevictable)					\
122e26fcc02SHyeonggon Yoo IF_HAVE_PG_MLOCK(mlocked)						\
123e26fcc02SHyeonggon Yoo IF_HAVE_PG_UNCACHED(uncached)						\
124e26fcc02SHyeonggon Yoo IF_HAVE_PG_HWPOISON(hwpoison)						\
125e26fcc02SHyeonggon Yoo IF_HAVE_PG_IDLE(idle)							\
126e26fcc02SHyeonggon Yoo IF_HAVE_PG_IDLE(young)							\
127e26fcc02SHyeonggon Yoo IF_HAVE_PG_ARCH_X(arch_2)						\
1280a54864fSPeter Collingbourne IF_HAVE_PG_ARCH_X(arch_3)
129420adbe9SVlastimil Babka 
130420adbe9SVlastimil Babka #define show_page_flags(flags)						\
131420adbe9SVlastimil Babka 	(flags) ? __print_flags(flags, "|",				\
132420adbe9SVlastimil Babka 	__def_pageflag_names						\
133420adbe9SVlastimil Babka 	) : "none"
134420adbe9SVlastimil Babka 
1354c85c0beSHyeonggon Yoo #define DEF_PAGETYPE_NAME(_name) { PG_##_name, __stringify(_name) }
1364c85c0beSHyeonggon Yoo 
1374c85c0beSHyeonggon Yoo #define __def_pagetype_names						\
138*2431b5f2SMatthew Wilcox (Oracle) 	DEF_PAGETYPE_NAME(hugetlb),					\
1394c85c0beSHyeonggon Yoo 	DEF_PAGETYPE_NAME(offline),					\
1404c85c0beSHyeonggon Yoo 	DEF_PAGETYPE_NAME(guard),					\
1414c85c0beSHyeonggon Yoo 	DEF_PAGETYPE_NAME(table),					\
1424c85c0beSHyeonggon Yoo 	DEF_PAGETYPE_NAME(buddy)
1434c85c0beSHyeonggon Yoo 
144420adbe9SVlastimil Babka #if defined(CONFIG_X86)
145bcf66917SKirill A. Shutemov #define __VM_ARCH_SPECIFIC_1 {VM_PAT,     "pat"           }
14612564485SShawn Anastasio #elif defined(CONFIG_PPC)
14712564485SShawn Anastasio #define __VM_ARCH_SPECIFIC_1 {VM_SAO,     "sao"           }
1485f171577SJames Hogan #elif defined(CONFIG_PARISC) || defined(CONFIG_IA64)
149bcf66917SKirill A. Shutemov #define __VM_ARCH_SPECIFIC_1 {VM_GROWSUP,	"growsup"	}
150420adbe9SVlastimil Babka #elif !defined(CONFIG_MMU)
151bcf66917SKirill A. Shutemov #define __VM_ARCH_SPECIFIC_1 {VM_MAPPED_COPY,"mappedcopy"	}
152420adbe9SVlastimil Babka #else
153bcf66917SKirill A. Shutemov #define __VM_ARCH_SPECIFIC_1 {VM_ARCH_1,	"arch_1"	}
154bcf66917SKirill A. Shutemov #endif
155bcf66917SKirill A. Shutemov 
156420adbe9SVlastimil Babka #ifdef CONFIG_MEM_SOFT_DIRTY
157420adbe9SVlastimil Babka #define IF_HAVE_VM_SOFTDIRTY(flag,name) {flag, name },
158420adbe9SVlastimil Babka #else
159420adbe9SVlastimil Babka #define IF_HAVE_VM_SOFTDIRTY(flag,name)
160420adbe9SVlastimil Babka #endif
161420adbe9SVlastimil Babka 
1627677f7fdSAxel Rasmussen #ifdef CONFIG_HAVE_ARCH_USERFAULTFD_MINOR
1637677f7fdSAxel Rasmussen # define IF_HAVE_UFFD_MINOR(flag, name) {flag, name},
1647677f7fdSAxel Rasmussen #else
1657677f7fdSAxel Rasmussen # define IF_HAVE_UFFD_MINOR(flag, name)
1667677f7fdSAxel Rasmussen #endif
1677677f7fdSAxel Rasmussen 
168420adbe9SVlastimil Babka #define __def_vmaflag_names						\
169420adbe9SVlastimil Babka 	{VM_READ,			"read"		},		\
170420adbe9SVlastimil Babka 	{VM_WRITE,			"write"		},		\
171420adbe9SVlastimil Babka 	{VM_EXEC,			"exec"		},		\
172420adbe9SVlastimil Babka 	{VM_SHARED,			"shared"	},		\
173420adbe9SVlastimil Babka 	{VM_MAYREAD,			"mayread"	},		\
174420adbe9SVlastimil Babka 	{VM_MAYWRITE,			"maywrite"	},		\
175420adbe9SVlastimil Babka 	{VM_MAYEXEC,			"mayexec"	},		\
176420adbe9SVlastimil Babka 	{VM_MAYSHARE,			"mayshare"	},		\
177420adbe9SVlastimil Babka 	{VM_GROWSDOWN,			"growsdown"	},		\
178bcf66917SKirill A. Shutemov 	{VM_UFFD_MISSING,		"uffd_missing"	},		\
1797677f7fdSAxel Rasmussen IF_HAVE_UFFD_MINOR(VM_UFFD_MINOR,	"uffd_minor"	)		\
180420adbe9SVlastimil Babka 	{VM_PFNMAP,			"pfnmap"	},		\
181bcf66917SKirill A. Shutemov 	{VM_UFFD_WP,			"uffd_wp"	},		\
182420adbe9SVlastimil Babka 	{VM_LOCKED,			"locked"	},		\
183420adbe9SVlastimil Babka 	{VM_IO,				"io"		},		\
184420adbe9SVlastimil Babka 	{VM_SEQ_READ,			"seqread"	},		\
185420adbe9SVlastimil Babka 	{VM_RAND_READ,			"randread"	},		\
186420adbe9SVlastimil Babka 	{VM_DONTCOPY,			"dontcopy"	},		\
187420adbe9SVlastimil Babka 	{VM_DONTEXPAND,			"dontexpand"	},		\
188bcf66917SKirill A. Shutemov 	{VM_LOCKONFAULT,		"lockonfault"	},		\
189420adbe9SVlastimil Babka 	{VM_ACCOUNT,			"account"	},		\
190420adbe9SVlastimil Babka 	{VM_NORESERVE,			"noreserve"	},		\
191420adbe9SVlastimil Babka 	{VM_HUGETLB,			"hugetlb"	},		\
1927e96fb57SAnshuman Khandual 	{VM_SYNC,			"sync"		},		\
193bcf66917SKirill A. Shutemov 	__VM_ARCH_SPECIFIC_1				,		\
194d2cd9edeSRik van Riel 	{VM_WIPEONFORK,			"wipeonfork"	},		\
195420adbe9SVlastimil Babka 	{VM_DONTDUMP,			"dontdump"	},		\
196420adbe9SVlastimil Babka IF_HAVE_VM_SOFTDIRTY(VM_SOFTDIRTY,	"softdirty"	)		\
197420adbe9SVlastimil Babka 	{VM_MIXEDMAP,			"mixedmap"	},		\
198420adbe9SVlastimil Babka 	{VM_HUGEPAGE,			"hugepage"	},		\
199420adbe9SVlastimil Babka 	{VM_NOHUGEPAGE,			"nohugepage"	},		\
200420adbe9SVlastimil Babka 	{VM_MERGEABLE,			"mergeable"	}		\
201420adbe9SVlastimil Babka 
202420adbe9SVlastimil Babka #define show_vma_flags(flags)						\
203420adbe9SVlastimil Babka 	(flags) ? __print_flags(flags, "|",				\
204420adbe9SVlastimil Babka 	__def_vmaflag_names						\
205420adbe9SVlastimil Babka 	) : "none"
206aff28015SMichal Hocko 
207aff28015SMichal Hocko #ifdef CONFIG_COMPACTION
208aff28015SMichal Hocko #define COMPACTION_STATUS					\
209aff28015SMichal Hocko 	EM( COMPACT_SKIPPED,		"skipped")		\
210aff28015SMichal Hocko 	EM( COMPACT_DEFERRED,		"deferred")		\
211aff28015SMichal Hocko 	EM( COMPACT_CONTINUE,		"continue")		\
212aff28015SMichal Hocko 	EM( COMPACT_SUCCESS,		"success")		\
213aff28015SMichal Hocko 	EM( COMPACT_PARTIAL_SKIPPED,	"partial_skipped")	\
214aff28015SMichal Hocko 	EM( COMPACT_COMPLETE,		"complete")		\
215aff28015SMichal Hocko 	EM( COMPACT_NO_SUITABLE_PAGE,	"no_suitable_page")	\
216aff28015SMichal Hocko 	EM( COMPACT_NOT_SUITABLE_ZONE,	"not_suitable_zone")	\
217aff28015SMichal Hocko 	EMe(COMPACT_CONTENDED,		"contended")
21865190cffSMichal Hocko 
21965190cffSMichal Hocko /* High-level compaction status feedback */
22065190cffSMichal Hocko #define COMPACTION_FAILED	1
22165190cffSMichal Hocko #define COMPACTION_WITHDRAWN	2
22265190cffSMichal Hocko #define COMPACTION_PROGRESS	3
22365190cffSMichal Hocko 
22465190cffSMichal Hocko #define compact_result_to_feedback(result)	\
22565190cffSMichal Hocko ({						\
22665190cffSMichal Hocko 	enum compact_result __result = result;	\
227ecd8b292SJohannes Weiner 	(__result == COMPACT_COMPLETE) ? COMPACTION_FAILED : \
228ecd8b292SJohannes Weiner 		(__result == COMPACT_SUCCESS) ? COMPACTION_PROGRESS : COMPACTION_WITHDRAWN; \
22965190cffSMichal Hocko })
23065190cffSMichal Hocko 
23165190cffSMichal Hocko #define COMPACTION_FEEDBACK		\
23265190cffSMichal Hocko 	EM(COMPACTION_FAILED,		"failed")	\
23365190cffSMichal Hocko 	EM(COMPACTION_WITHDRAWN,	"withdrawn")	\
23465190cffSMichal Hocko 	EMe(COMPACTION_PROGRESS,	"progress")
23565190cffSMichal Hocko 
23665190cffSMichal Hocko #define COMPACTION_PRIORITY						\
23765190cffSMichal Hocko 	EM(COMPACT_PRIO_SYNC_FULL,	"COMPACT_PRIO_SYNC_FULL")	\
23865190cffSMichal Hocko 	EM(COMPACT_PRIO_SYNC_LIGHT,	"COMPACT_PRIO_SYNC_LIGHT")	\
23965190cffSMichal Hocko 	EMe(COMPACT_PRIO_ASYNC,		"COMPACT_PRIO_ASYNC")
240aff28015SMichal Hocko #else
241aff28015SMichal Hocko #define COMPACTION_STATUS
24265190cffSMichal Hocko #define COMPACTION_PRIORITY
24365190cffSMichal Hocko #define COMPACTION_FEEDBACK
244aff28015SMichal Hocko #endif
245aff28015SMichal Hocko 
246aff28015SMichal Hocko #ifdef CONFIG_ZONE_DMA
247aff28015SMichal Hocko #define IFDEF_ZONE_DMA(X) X
248aff28015SMichal Hocko #else
249aff28015SMichal Hocko #define IFDEF_ZONE_DMA(X)
250aff28015SMichal Hocko #endif
251aff28015SMichal Hocko 
252aff28015SMichal Hocko #ifdef CONFIG_ZONE_DMA32
253aff28015SMichal Hocko #define IFDEF_ZONE_DMA32(X) X
254aff28015SMichal Hocko #else
255aff28015SMichal Hocko #define IFDEF_ZONE_DMA32(X)
256aff28015SMichal Hocko #endif
257aff28015SMichal Hocko 
258aff28015SMichal Hocko #ifdef CONFIG_HIGHMEM
259aff28015SMichal Hocko #define IFDEF_ZONE_HIGHMEM(X) X
260aff28015SMichal Hocko #else
261aff28015SMichal Hocko #define IFDEF_ZONE_HIGHMEM(X)
262aff28015SMichal Hocko #endif
263aff28015SMichal Hocko 
264aff28015SMichal Hocko #define ZONE_TYPE						\
265aff28015SMichal Hocko 	IFDEF_ZONE_DMA(		EM (ZONE_DMA,	 "DMA"))	\
266aff28015SMichal Hocko 	IFDEF_ZONE_DMA32(	EM (ZONE_DMA32,	 "DMA32"))	\
267aff28015SMichal Hocko 				EM (ZONE_NORMAL, "Normal")	\
268aff28015SMichal Hocko 	IFDEF_ZONE_HIGHMEM(	EM (ZONE_HIGHMEM,"HighMem"))	\
269aff28015SMichal Hocko 				EMe(ZONE_MOVABLE,"Movable")
270aff28015SMichal Hocko 
27132b3f297SMichal Hocko #define LRU_NAMES		\
27232b3f297SMichal Hocko 		EM (LRU_INACTIVE_ANON, "inactive_anon") \
27332b3f297SMichal Hocko 		EM (LRU_ACTIVE_ANON, "active_anon") \
27432b3f297SMichal Hocko 		EM (LRU_INACTIVE_FILE, "inactive_file") \
27532b3f297SMichal Hocko 		EM (LRU_ACTIVE_FILE, "active_file") \
27632b3f297SMichal Hocko 		EMe(LRU_UNEVICTABLE, "unevictable")
27732b3f297SMichal Hocko 
278aff28015SMichal Hocko /*
279aff28015SMichal Hocko  * First define the enums in the above macros to be exported to userspace
280aff28015SMichal Hocko  * via TRACE_DEFINE_ENUM().
281aff28015SMichal Hocko  */
282aff28015SMichal Hocko #undef EM
283aff28015SMichal Hocko #undef EMe
284aff28015SMichal Hocko #define EM(a, b)	TRACE_DEFINE_ENUM(a);
285aff28015SMichal Hocko #define EMe(a, b)	TRACE_DEFINE_ENUM(a);
286aff28015SMichal Hocko 
287aff28015SMichal Hocko COMPACTION_STATUS
28865190cffSMichal Hocko COMPACTION_PRIORITY
2897ab0e50aSSteven Rostedt (VMware) /* COMPACTION_FEEDBACK are defines not enums. Not needed here. */
290aff28015SMichal Hocko ZONE_TYPE
29132b3f297SMichal Hocko LRU_NAMES
292aff28015SMichal Hocko 
293aff28015SMichal Hocko /*
294aff28015SMichal Hocko  * Now redefine the EM() and EMe() macros to map the enums to the strings
295aff28015SMichal Hocko  * that will be printed in the output.
296aff28015SMichal Hocko  */
297aff28015SMichal Hocko #undef EM
298aff28015SMichal Hocko #undef EMe
299aff28015SMichal Hocko #define EM(a, b)	{a, b},
300aff28015SMichal Hocko #define EMe(a, b)	{a, b}
301