int mca_memheap_base_static_init(mca_memheap_map_t *map) { /* read and parse segments from /proc/self/maps */ int ret = OSHMEM_SUCCESS; assert(map); assert(SYMB_SEG_INDEX <= map->n_segments); ret = _load_segments(); if (OSHMEM_SUCCESS == ret) { int i; size_t total_mem; for (i = 0, total_mem = 0; i < memheap_context.n_segments; i++) { map_segment_t *s = &map->mem_segs[map->n_segments]; memset(s, 0, sizeof(*s)); MAP_SEGMENT_RESET_FLAGS(s); s->seg_id = MAP_SEGMENT_SHM_INVALID; s->seg_base_addr = memheap_context.mem_segs[i].start; s->end = memheap_context.mem_segs[i].end; s->seg_size = ((uintptr_t)s->end - (uintptr_t)s->seg_base_addr); s->type = MAP_SEGMENT_STATIC; map->n_segments++; total_mem += ((uintptr_t)s->end - (uintptr_t)s->seg_base_addr); } MEMHEAP_VERBOSE(1, "Memheap static memory: %llu byte(s), %d segments", (unsigned long long)total_mem, map->n_segments); } return ret; }
/** * completely resets the contents of *ds_buf */ static inline void shmem_ds_reset(map_segment_t *ds_buf) { OPAL_OUTPUT_VERBOSE( (70, oshmem_sshmem_base_framework.framework_output, "%s: %s: shmem_ds_resetting " "(id: %d, size: %lu, name: %s)\n", mca_sshmem_sysv_component.super.base_version.mca_type_name, mca_sshmem_sysv_component.super.base_version.mca_component_name, ds_buf->seg_id, (unsigned long)ds_buf->seg_size, ds_buf->seg_name) ); MAP_SEGMENT_RESET_FLAGS(ds_buf); ds_buf->seg_id = MAP_SEGMENT_SHM_INVALID; ds_buf->seg_base_addr = 0; ds_buf->end = 0; ds_buf->seg_size = 0; ds_buf->type = MAP_SEGMENT_UNKNOWN; memset(ds_buf->seg_name, '\0', sizeof(ds_buf->seg_name)); }