#include <linux/seq_file.h>
#include <linux/debugfs.h>
#include <linux/kernel.h>
#include <linux/interval_tree_generic.h>
#include <linux/sched.h>
#include <linux/gfp.h>
#include <linux/pgtable.h>
#include <asm/memtype.h>
#include "memtype.h"
static inline u64 interval_start(struct memtype *entry)
{ … }
static inline u64 interval_end(struct memtype *entry)
{ … }
INTERVAL_TREE_DEFINE(…)
static struct rb_root_cached memtype_rbroot = …;
enum { … };
static struct memtype *memtype_match(u64 start, u64 end, int match_type)
{ … }
static int memtype_check_conflict(u64 start, u64 end,
enum page_cache_mode reqtype,
enum page_cache_mode *newtype)
{ … }
int memtype_check_insert(struct memtype *entry_new, enum page_cache_mode *ret_type)
{ … }
struct memtype *memtype_erase(u64 start, u64 end)
{ … }
struct memtype *memtype_lookup(u64 addr)
{ … }
#ifdef CONFIG_DEBUG_FS
int memtype_copy_nth_element(struct memtype *entry_out, loff_t pos)
{ … }
#endif