/* * Copyright (c) 2014 Mellanox Technologies, Inc. * All rights reserved. * Copyright (c) 2019 Research Organization for Information Science * and Technology (RIST). All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ */ #include "oshmem_config.h" #include "opal/constants.h" #include "oshmem/mca/sshmem/sshmem.h" #include "oshmem/mca/sshmem/base/base.h" int mca_sshmem_segment_create(map_segment_t *ds_buf, const char *file_name, size_t size, long hint) { if (!mca_sshmem_base_selected) { return OSHMEM_ERROR; } return mca_sshmem_base_module->segment_create(ds_buf, file_name, size, hint); } void * mca_sshmem_segment_attach(map_segment_t *ds_buf, sshmem_mkey_t *mkey) { if (!mca_sshmem_base_selected) { return NULL; } return mca_sshmem_base_module->segment_attach(ds_buf, mkey); } int mca_sshmem_segment_detach(map_segment_t *ds_buf, sshmem_mkey_t *mkey) { if (!mca_sshmem_base_selected) { return OSHMEM_ERROR; } return mca_sshmem_base_module->segment_detach(ds_buf, mkey); } int mca_sshmem_unlink(map_segment_t *ds_buf) { if (!mca_sshmem_base_selected) { return OSHMEM_ERROR; } return mca_sshmem_base_module->unlink(ds_buf); } char * oshmem_get_unique_file_name(uint64_t pe) { char *file_name = NULL; assert(mca_sshmem_base_backing_file_dir); if (NULL == (file_name = calloc(OPAL_PATH_MAX, sizeof(char)))) { return NULL; } snprintf(file_name, OPAL_PATH_MAX, "%s/shmem_job_%u_pe_%llu", mca_sshmem_base_backing_file_dir, OMPI_PROC_MY_NAME->jobid, (unsigned long long)pe); return file_name; } void shmem_ds_reset(map_segment_t *ds_buf) { MAP_SEGMENT_RESET_FLAGS(ds_buf); ds_buf->seg_id = MAP_SEGMENT_SHM_INVALID; ds_buf->super.va_base = 0; ds_buf->super.va_end = 0; ds_buf->seg_size = 0; ds_buf->type = MAP_SEGMENT_UNKNOWN; }