1 /* 2 * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana 3 * University Research and Technology 4 * Corporation. All rights reserved. 5 * Copyright (c) 2004-2005 The University of Tennessee and The University 6 * of Tennessee Research Foundation. All rights 7 * reserved. 8 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 9 * University of Stuttgart. All rights reserved. 10 * Copyright (c) 2004-2005 The Regents of the University of California. 11 * All rights reserved. 12 * Copyright (c) 2007 Cisco Systems, Inc. All rights reserved. 13 * Copyright (c) 2015 Research Organization for Information Science 14 * and Technology (RIST). All rights reserved. 15 * $COPYRIGHT$ 16 * 17 * Additional copyrights may follow 18 * 19 * $HEADER$ 20 */ 21 22 #include "ompi_config.h" 23 24 #include <stdio.h> 25 #include <stdlib.h> 26 27 #include "ompi/mpi/c/bindings.h" 28 #include "ompi/communicator/communicator.h" 29 #include "ompi/errhandler/errhandler.h" 30 #include "opal/mca/mpool/mpool.h" 31 32 #if OMPI_BUILD_MPI_PROFILING 33 #if OPAL_HAVE_WEAK_SYMBOLS 34 #pragma weak MPI_Free_mem = PMPI_Free_mem 35 #endif 36 #define MPI_Free_mem PMPI_Free_mem 37 #endif 38 39 static const char FUNC_NAME[] = "MPI_Free_mem"; 40 41 42 int MPI_Free_mem(void *baseptr) 43 { 44 OPAL_CR_ENTER_LIBRARY(); 45 46 /* Per these threads: 47 48 http://www.open-mpi.org/community/lists/devel/2007/07/1977.php 49 http://www.open-mpi.org/community/lists/devel/2007/07/1979.php 50 51 If you call MPI_ALLOC_MEM with a size of 0, you get NULL 52 back. So don't consider a NULL==baseptr an error. */ 53 if (NULL != baseptr && OMPI_SUCCESS != mca_mpool_base_free(baseptr)) { 54 OPAL_CR_EXIT_LIBRARY(); 55 return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_NO_MEM, FUNC_NAME); 56 } 57 58 OPAL_CR_EXIT_LIBRARY(); 59 return MPI_SUCCESS; 60 } 61