/* * Copyright (c) 2014 Mellanox Technologies, Inc. * All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ */ #ifndef MCA_SSHMEM_SYSV_EXPORT_H #define MCA_SSHMEM_SYSV_EXPORT_H #include "oshmem_config.h" #include "opal/util/sys_limits.h" #include "oshmem/mca/sshmem/sshmem.h" BEGIN_C_DECLS /** * globally exported variable to hold the sysv component. */ typedef struct mca_sshmem_sysv_component_t { /* base component struct */ mca_sshmem_base_component_t super; /* priority for sysv component */ int priority; int use_hp; } mca_sshmem_sysv_component_t; OSHMEM_MODULE_DECLSPEC extern mca_sshmem_sysv_component_t mca_sshmem_sysv_component; typedef struct mca_sshmem_sysv_module_t { mca_sshmem_base_module_t super; } mca_sshmem_sysv_module_t; extern mca_sshmem_sysv_module_t mca_sshmem_sysv_module; /* * Get current huge page size */ static size_t oshmem_gethugepagesize(void) { static size_t huge_page_size = 0; char buf[256]; int size_kb; FILE *f; /* Cache the huge page size value */ if (huge_page_size == 0) { f = fopen("/proc/meminfo", "r"); if (f != NULL) { while (fgets(buf, sizeof(buf), f)) { if (sscanf(buf, "Hugepagesize: %d kB", &size_kb) == 1) { huge_page_size = size_kb * 1024L; break; } } fclose(f); } if (huge_page_size == 0) { huge_page_size = 2 * 1024L *1024L; } } return huge_page_size; } END_C_DECLS #endif /* MCA_SSHMEM_SYSV_EXPORT_H */