Files

44 lines
1.2 KiB
C
Raw Permalink Normal View History

2026-08-13 11:28:40 +08:00
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __GCMA_H__
#define __GCMA_H__
#include <linux/types.h>
#ifdef CONFIG_GCMA
enum gcma_stat_type {
ALLOCATED_PAGE,
STORED_PAGE,
LOADED_PAGE,
EVICTED_PAGE,
CACHED_PAGE,
DISCARDED_PAGE,
TOTAL_PAGE,
NUM_OF_GCMA_STAT,
};
#ifdef CONFIG_GCMA_SYSFS
u64 gcma_stat_get(enum gcma_stat_type type);
#else
static inline u64 gcma_stat_get(enum gcma_stat_type type) { return 0; }
#endif
/*
* NOTE: allocated pages are still marked reserved and when freeing them
* the caller should ensure they are isolated and not referenced by anyone
* other than the caller.
*/
extern void gcma_alloc_range(unsigned long start_pfn, unsigned long end_pfn);
extern void gcma_free_range(unsigned long start_pfn, unsigned long end_pfn);
extern int register_gcma_area(const char *name, phys_addr_t base,
phys_addr_t size);
#else
static inline void gcma_alloc_range(unsigned long start_pfn,
unsigned long end_pfn) {}
static inline void gcma_free_range(unsigned long start_pfn,
unsigned long end_pfn) {}
static inline int register_gcma_area(const char *name, phys_addr_t base,
phys_addr_t size) { return -EINVAL; }
#endif
#endif