Files
BPI-M2C/source_sync_rls_25c/source/kernel/kernel5.4/mm/cma.h
T
2026-09-22 09:38:26 +08:00

51 lines
1.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MM_CMA_H__
#define __MM_CMA_H__
struct cma {
unsigned long base_pfn;
unsigned long count;
#ifdef CONFIG_SPRD_CMA_DEBUG
unsigned long free_count;
#endif
unsigned long *bitmap;
unsigned int order_per_bit; /* Order of pages represented by one bit */
struct mutex lock;
#ifdef CONFIG_CMA_DEBUGFS
struct hlist_head mem_head;
spinlock_t mem_head_lock;
#endif
const char *name;
};
#ifdef CONFIG_SPRD_CMA_DEBUG
struct sprd_cma_debug_info {
unsigned long caller_addr;
int alloc_pages;
unsigned int alloc_cnt;
unsigned long cost_us;
};
#define MAX_SPRD_CMA_DEBUG_NUM 512
struct sprd_cma_debug {
struct sprd_cma_debug_info sprd_cma_info[MAX_SPRD_CMA_DEBUG_NUM];
struct mutex lock;
unsigned int sum_cnt;
};
extern int sysctl_sprd_cma_debug;
int sysctl_sprd_cma_debug_handler(struct ctl_table *table, int write,
void __user *buffer, size_t *length, loff_t *ppos);
#endif
extern struct cma cma_areas[MAX_CMA_AREAS];
extern unsigned cma_area_count;
static inline unsigned long cma_bitmap_maxno(struct cma *cma)
{
return cma->count >> cma->order_per_bit;
}
#endif