/* * Storage element id is defined as 1 byte (up to 256 storage elements). * In practise only storage element id 0 and 1 are used). * According to architecture one storage element could have as much as * 1020 subincrements. 255 physmem_ranges are embedded in physmem_info. * If more physmem_ranges are required, a block of memory from already * known physmem_range is taken (online_extended points to it).
*/ #define MEM_INLINED_ENTRIES 255 /* (PAGE_SIZE - 16) / 16 */
if (respect_usable_limit && physmem_info.usable) { if (*start >= physmem_info.usable) return -1; if (*end > physmem_info.usable)
*end = physmem_info.usable;
} return 0;
}
/** * for_each_physmem_usable_range - early online memory range iterator * @i: an integer used as loop variable * @p_start: ptr to unsigned long for start address of the range * @p_end: ptr to unsigned long for end address of the range * * Walks over detected online memory ranges below usable limit.
*/ #define for_each_physmem_usable_range(i, p_start, p_end) \ for (i = 0; !__get_physmem_range(i, p_start, p_end, true); i++)
/* Walks over all detected online memory ranges disregarding usable limit. */ #define for_each_physmem_online_range(i, p_start, p_end) \ for (i = 0; !__get_physmem_range(i, p_start, p_end, false); i++)
staticinlineconstchar *get_physmem_info_source(void)
{ switch (physmem_info.info_source) { case MEM_DETECT_SCLP_STOR_INFO: return"sclp storage info"; case MEM_DETECT_DIAG260: return"diag260"; case MEM_DETECT_DIAG500_STOR_LIMIT: return"diag500 storage limit"; case MEM_DETECT_SCLP_READ_INFO: return"sclp read info"; case MEM_DETECT_BIN_SEARCH: return"binary search";
} return"none";
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.