#include <linux/mm.h>
#include <linux/mmzone.h>
#include <linux/page_reporting.h>
#include <linux/gfp.h>
#include <linux/export.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/scatterlist.h>
#include "page_reporting.h"
#include "internal.h"
unsigned int page_reporting_order = …;
static int page_order_update_notify(const char *val, const struct kernel_param *kp)
{ … }
static const struct kernel_param_ops page_reporting_param_ops = …;
module_param_cb(…);
MODULE_PARM_DESC(…) …;
EXPORT_SYMBOL_GPL(…);
#define PAGE_REPORTING_DELAY …
static struct page_reporting_dev_info __rcu *pr_dev_info __read_mostly;
enum { … };
static void
__page_reporting_request(struct page_reporting_dev_info *prdev)
{ … }
void __page_reporting_notify(void)
{ … }
static void
page_reporting_drain(struct page_reporting_dev_info *prdev,
struct scatterlist *sgl, unsigned int nents, bool reported)
{ … }
static int
page_reporting_cycle(struct page_reporting_dev_info *prdev, struct zone *zone,
unsigned int order, unsigned int mt,
struct scatterlist *sgl, unsigned int *offset)
{ … }
static int
page_reporting_process_zone(struct page_reporting_dev_info *prdev,
struct scatterlist *sgl, struct zone *zone)
{ … }
static void page_reporting_process(struct work_struct *work)
{ … }
static DEFINE_MUTEX(page_reporting_mutex);
DEFINE_STATIC_KEY_FALSE(page_reporting_enabled);
int page_reporting_register(struct page_reporting_dev_info *prdev)
{ … }
EXPORT_SYMBOL_GPL(…);
void page_reporting_unregister(struct page_reporting_dev_info *prdev)
{ … }
EXPORT_SYMBOL_GPL(…);