Function report |
Source Code:mm\cma.c |
Create Date:2022-07-28 16:31:57 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:ma_declare_contiguous() - reserve custom contiguous area*@base: Base address of the reserved area optional, use 0 for any*@size: Size of the reserved area (in bytes),*@limit: End address of the reserved memory (optional, 0 for any)
Proto:int __init cma_declare_contiguous(phys_addr_t base, phys_addr_t size, phys_addr_t limit, phys_addr_t alignment, unsigned int order_per_bit, bool fixed, const char *name, struct cma **res_cma)
Type:int
Parameter:
Type | Parameter | Name |
---|---|---|
phys_addr_t | base | |
phys_addr_t | size | |
phys_addr_t | limit | |
phys_addr_t | alignment | |
unsigned int | order_per_bit | |
bool | fixed | |
const char * | name | |
struct cma ** | res_cma |
246 | memblock_end = memblock_end_of_DRAM() |
248 | ret = 0 |
256 | highmem_start = __pa(A number of key systems in x86 including ioremap() rely on the assumption* that high_memory defines the upper bound on direct map memory, then end* of ZONE_NORMAL - 1) + 1 |
257 | pr_debug("%s(size %pa, base %pa, limit %pa alignment %pa)\n", __func__, & size, & base, & limit, & alignment) |
283 | Go to err |
285 | base = @a is a power of 2 value (base, alignment) |
286 | size = @a is a power of 2 value (size, alignment) |
293 | If Not IS_ALIGNED(size >> PAGE_SHIFT determines the page size , 1 << order_per_bit) Then Return -EINVAL |
300 | If fixed && base < highmem_start && base + size > highmem_start Then |
302 | pr_err("Region at %pa defined on low/high memory boundary (%pa)\n", & base, & highmem_start) |
304 | Go to err |
312 | If limit == 0 || limit > memblock_end Then limit = memblock_end |
319 | Go to err |
323 | If fixed Then |
324 | If memblock_is_region_reserved(base, size) || memblock_reserve(base, size) < 0 Then |
329 | Else |
330 | addr = 0 |
338 | If base < highmem_start && limit > highmem_start Then |
341 | limit = highmem_start |
344 | If Not addr Then |
367 | Return 0 |
369 | free_mem : |
370 | memblock_free(base, size) |
371 | err : |
373 | Return ret |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |