static void cb_parse_memory(unsigned char *ptr, struct sysinfo_t *info) { struct cb_memory *mem = (struct cb_memory *)ptr; int count = MEM_RANGE_COUNT(mem); int i; if (count > SYSINFO_MAX_MEM_RANGES) count = SYSINFO_MAX_MEM_RANGES; info->n_memranges = 0; for (i = 0; i < count; i++) { struct cb_memory_range *range = (struct cb_memory_range *)MEM_RANGE_PTR(mem, i); #ifdef CONFIG_MEMMAP_RAM_ONLY if (range->type != CB_MEM_RAM) continue; #endif info->memrange[info->n_memranges].base = UNPACK_CB64(range->start); info->memrange[info->n_memranges].size = UNPACK_CB64(range->size); info->memrange[info->n_memranges].type = range->type; info->n_memranges++; } }
static void cb_parse_memory(void *ptr, struct sysinfo_t *info) { struct cb_memory *mem = ptr; int count = MEM_RANGE_COUNT(mem); int i; if (count > SYSINFO_MAX_MEM_RANGES) count = SYSINFO_MAX_MEM_RANGES; info->n_memranges = 0; for (i = 0; i < count; i++) { struct cb_memory_range *range = MEM_RANGE_PTR(mem, i); #if IS_ENABLED(CONFIG_LP_MEMMAP_RAM_ONLY) if (range->type != CB_MEM_RAM) continue; #endif info->memrange[info->n_memranges].base = cb_unpack64(range->start); info->memrange[info->n_memranges].size = cb_unpack64(range->size); info->memrange[info->n_memranges].type = range->type; info->n_memranges++; } }
/* This is the generic parsing code. */ static void cb_parse_memory(void *ptr, struct sysinfo_t *info) { kmprint("%s\n", __func__); struct cb_memory *mem = ptr; int count = MEM_RANGE_COUNT(mem); int i; if (count > SYSINFO_MAX_MEM_RANGES) count = SYSINFO_MAX_MEM_RANGES; info->n_memranges = 0; for (i = 0; i < count; i++) { struct cb_memory_range *range = MEM_RANGE_PTR(mem, i); info->memrange[info->n_memranges].base = cb_unpack64(range->start); info->memrange[info->n_memranges].size = cb_unpack64(range->size); info->memrange[info->n_memranges].type = range->type; info->n_memranges++; } }
static void parse_memory(unsigned char *ptr) { struct cb_memory *mem = (struct cb_memory *)ptr; int max = (MEM_RANGE_COUNT(mem) > MAX_MEMORY_COUNT) ? MAX_MEMORY_COUNT : MEM_RANGE_COUNT(mem); int i; for (i = 0; i < max; i++) { struct cb_memory_range *range = (struct cb_memory_range *)MEM_RANGE_PTR(mem, i); memcpy(&cb_info.range[i], range, sizeof(*range)); } cb_info.mem_count = max; cb_info.mem_actual = MEM_RANGE_COUNT(mem); }