+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0))
+TRACE_EVENT(mm_compaction_migratepages,
+
+ TP_PROTO(unsigned long nr_all,
+ int migrate_rc,
+ struct list_head *migratepages),
+
+ TP_ARGS(nr_all, migrate_rc, migratepages),
+
+ TP_STRUCT__entry(
+ __field(unsigned long, nr_migrated)
+ __field(unsigned long, nr_failed)
+ ),
+
+ TP_fast_assign(
+ tp_assign(nr_migrated,
+ nr_all -
+ (migrate_rc >= 0 ? migrate_rc :
+ ({
+ unsigned long nr_failed = 0;
+ struct list_head *page_lru;
+
+ list_for_each(page_lru, migratepages)
+ nr_failed++;
+ nr_failed;
+ })))
+ tp_assign(nr_failed,
+ ({
+ unsigned long nr_failed = 0;
+ struct list_head *page_lru;
+
+ list_for_each(page_lru, migratepages)
+ nr_failed++;
+ nr_failed;
+ }))
+ ),
+
+ TP_printk("nr_migrated=%lu nr_failed=%lu",
+ __entry->nr_migrated,
+ __entry->nr_failed)
+)
+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0)) */