Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.8 54 lines 1.6 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _MM_PAGE_REPORTING_H 3#define _MM_PAGE_REPORTING_H 4 5#include <linux/mmzone.h> 6#include <linux/pageblock-flags.h> 7#include <linux/page-isolation.h> 8#include <linux/jump_label.h> 9#include <linux/slab.h> 10#include <linux/pgtable.h> 11#include <linux/scatterlist.h> 12 13#define PAGE_REPORTING_MIN_ORDER pageblock_order 14 15#ifdef CONFIG_PAGE_REPORTING 16DECLARE_STATIC_KEY_FALSE(page_reporting_enabled); 17void __page_reporting_notify(void); 18 19static inline bool page_reported(struct page *page) 20{ 21 return static_branch_unlikely(&page_reporting_enabled) && 22 PageReported(page); 23} 24 25/** 26 * page_reporting_notify_free - Free page notification to start page processing 27 * 28 * This function is meant to act as a screener for __page_reporting_notify 29 * which will determine if a give zone has crossed over the high-water mark 30 * that will justify us beginning page treatment. If we have crossed that 31 * threshold then it will start the process of pulling some pages and 32 * placing them in the batch list for treatment. 33 */ 34static inline void page_reporting_notify_free(unsigned int order) 35{ 36 /* Called from hot path in __free_one_page() */ 37 if (!static_branch_unlikely(&page_reporting_enabled)) 38 return; 39 40 /* Determine if we have crossed reporting threshold */ 41 if (order < PAGE_REPORTING_MIN_ORDER) 42 return; 43 44 /* This will add a few cycles, but should be called infrequently */ 45 __page_reporting_notify(); 46} 47#else /* CONFIG_PAGE_REPORTING */ 48#define page_reported(_page) false 49 50static inline void page_reporting_notify_free(unsigned int order) 51{ 52} 53#endif /* CONFIG_PAGE_REPORTING */ 54#endif /*_MM_PAGE_REPORTING_H */