root/mpich2/trunk/src/mpid/ch3/channels/nemesis/nemesis/src/mpid_nem_finalize.c @ 4865

Revision 4865, 3.5 KB (checked in by buntinas, 5 months ago)

stomped some warnings

Line 
1/* -*- Mode: C; c-basic-offset:4 ; -*- */
2/*
3 *  (C) 2006 by Argonne National Laboratory.
4 *      See COPYRIGHT in top-level directory.
5 */
6
7#include "mpid_nem_impl.h"
8#include "mpid_nem_nets.h"
9#ifndef USE_PMI2_API
10#include "pmi.h"
11#endif
12
13#undef FUNCNAME
14#define FUNCNAME MPID_nem_finalize
15#undef FCNAME
16#define FCNAME MPIDI_QUOTE(FUNCNAME)
17int MPID_nem_finalize(void)
18{
19    int mpi_errno = MPI_SUCCESS;
20    int pmi_errno;
21    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_FINALIZE);
22
23    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_FINALIZE);
24
25    /* this test is not the right one */
26/*     MPIU_Assert(MPID_nem_queue_empty( MPID_nem_mem_region.RecvQ[MPID_nem_mem_region.rank])); */
27
28    /* these are allocated in MPID_nem_mpich2_init, not MPID_nem_init */
29    MPIU_Free(MPID_nem_recv_seqno);
30    MPIU_Free(MPID_nem_fboxq_elem_list);
31
32    /* from MPID_nem_init */
33    MPIU_Free(MPID_nem_mem_region.FreeQ);
34    MPIU_Free(MPID_nem_mem_region.RecvQ);
35    MPIU_Free(MPID_nem_mem_region.local_ranks);
36    MPIU_Free(MPID_nem_mem_region.ext_ranks);
37    MPIU_Free(MPID_nem_mem_region.seg);
38    MPIU_Free(MPID_nem_mem_region.mailboxes.out);
39    MPIU_Free(MPID_nem_mem_region.mailboxes.in);
40
41    MPIU_Free(MPID_nem_mem_region.local_procs);
42
43#ifdef MEM_REGION_IN_HEAP
44    MPIU_Free(MPID_nem_mem_region_ptr);
45#endif /* MEM_REGION_IN_HEAP */
46
47    mpi_errno = MPID_nem_netmod_func->finalize();
48    if (mpi_errno) MPIU_ERR_POP (mpi_errno);
49
50    /* free the shared memory segment */
51    mpi_errno = MPIDI_CH3I_Seg_destroy();
52    if (mpi_errno) MPIU_ERR_POP (mpi_errno);
53
54#ifdef PAPI_MONITOR
55    my_papi_close();
56#endif /*PAPI_MONITOR */
57
58#ifdef USE_PMI2_API
59    /* FIXME: I removed this PMI_Barrier in PMI2.  The barrier seems
60       not to be necessary, but I'm keeping this here until I'm
61       convinced that this isn't here to handle some timing-related
62       bug. DARIUS */
63#else
64    pmi_errno = PMI_Barrier(); 
65    MPIU_ERR_CHKANDJUMP1 (pmi_errno != PMI_SUCCESS, mpi_errno, MPI_ERR_OTHER, "**pmi_barrier", "**pmi_barrier %d", pmi_errno); 
66#endif
67   
68 fn_exit:
69    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_FINALIZE);
70    return mpi_errno;
71 fn_fail:
72    goto fn_exit;
73}
74
75#undef FUNCNAME
76#define FUNCNAME MPID_nem_ckpt_shutdown
77#undef FCNAME
78#define FCNAME MPIDI_QUOTE(FUNCNAME)
79int MPID_nem_ckpt_shutdown(void)
80{
81    int mpi_errno = MPI_SUCCESS;
82    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_CKPT_SHUTDOWN);
83
84    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_CKPT_SHUTDOWN);
85
86    MPID_nem_netmod_func->ckpt_shutdown();
87    mpi_errno = MPIU_SHMW_Seg_detach(MPID_nem_mem_region.memory.hnd,
88                    &(MPID_nem_mem_region.memory.base_addr),
89                    MPID_nem_mem_region.memory.segment_len);
90    if(mpi_errno != MPI_SUCCESS) { MPIU_ERR_POP(mpi_errno); } 
91
92fn_exit:
93    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_CKPT_SHUTDOWN);
94    return mpi_errno;
95fn_fail:
96    goto fn_exit;
97}
98
99#undef FUNCNAME
100#define FUNCNAME MPID_nem_finalize
101#undef FCNAME
102#define FCNAME MPIDI_QUOTE(FUNCNAME)
103int MPID_nem_vc_terminate(MPIDI_VC_t *vc)
104{
105    int mpi_errno = MPI_SUCCESS;
106    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_VC_TERMINATE);
107
108    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_VC_TERMINATE);
109
110    mpi_errno = MPIU_SHMW_Hnd_finalize(&(((MPIDI_CH3I_VC *)vc->channel_private)->lmt_copy_buf_handle));
111    if(mpi_errno != MPI_SUCCESS) { MPIU_ERR_POP(mpi_errno); }
112    mpi_errno = MPIU_SHMW_Hnd_finalize(&(((MPIDI_CH3I_VC *)vc->channel_private)->lmt_recv_copy_buf_handle));
113    if(mpi_errno != MPI_SUCCESS) { MPIU_ERR_POP(mpi_errno); }
114
115fn_exit:
116    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_VC_TERMINATE);
117    return mpi_errno;
118fn_fail:
119    goto fn_exit;
120}
Note: See TracBrowser for help on using the browser.