Initial Contribution
msm-2.6.38: tag AU_LINUX_ANDROID_GINGERBREAD.02.03.04.00.142 Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
This commit is contained in:
63
include/linux/vcm_alloc.h
Normal file
63
include/linux/vcm_alloc.h
Normal file
@@ -0,0 +1,63 @@
|
||||
/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
* only version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef VCM_ALLOC_H
|
||||
#define VCM_ALLOC_H
|
||||
|
||||
#include <linux/list.h>
|
||||
#include <linux/vcm.h>
|
||||
#include <linux/vcm_types.h>
|
||||
|
||||
#define MAX_NUM_PRIO_POOLS 8
|
||||
|
||||
/* Data structure to inform VCM about the memory it manages */
|
||||
struct physmem_region {
|
||||
size_t addr;
|
||||
size_t size;
|
||||
int chunk_size;
|
||||
};
|
||||
|
||||
/* Mapping between memtypes and physmem_regions based on chunk size */
|
||||
struct vcm_memtype_map {
|
||||
int pool_id[MAX_NUM_PRIO_POOLS];
|
||||
int num_pools;
|
||||
};
|
||||
|
||||
int vcm_alloc_pool_idx_to_size(int pool_idx);
|
||||
int vcm_alloc_idx_to_size(int idx);
|
||||
int vcm_alloc_get_mem_size(void);
|
||||
int vcm_alloc_blocks_avail(enum memtype_t memtype, int idx);
|
||||
int vcm_alloc_get_num_chunks(enum memtype_t memtype);
|
||||
int vcm_alloc_all_blocks_avail(enum memtarget_t memtype);
|
||||
int vcm_alloc_count_allocated(enum memtype_t memtype);
|
||||
void vcm_alloc_print_list(enum memtype_t memtype, int just_allocated);
|
||||
int vcm_alloc_idx_to_size(int idx);
|
||||
int vcm_alloc_destroy(void);
|
||||
int vcm_alloc_init(struct physmem_region *mem, int n_regions,
|
||||
struct vcm_memtype_map *mt_map, int n_mt);
|
||||
int vcm_alloc_free_blocks(enum memtype_t memtype,
|
||||
struct phys_chunk *alloc_head);
|
||||
int vcm_alloc_num_blocks(int num, enum memtype_t memtype,
|
||||
int idx, /* chunk size */
|
||||
struct phys_chunk *alloc_head);
|
||||
int vcm_alloc_max_munch(int len, enum memtype_t memtype,
|
||||
struct phys_chunk *alloc_head);
|
||||
|
||||
/* bring-up init, destroy */
|
||||
int vcm_sys_init(struct physmem_region *mem, int n_regions,
|
||||
struct vcm_memtype_map *mt_map, int n_mt,
|
||||
void *cont_pa, unsigned int cont_sz);
|
||||
|
||||
int vcm_sys_destroy(void);
|
||||
|
||||
#endif /* VCM_ALLOC_H */
|
||||
Reference in New Issue
Block a user