1
1
openmpi/ompi/peruse/peruse_module.c

80 строки
2.0 KiB
C
Исходник Обычный вид История

/*
* Copyright (c) 2004-2006 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2006 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include <stdlib.h>
#include "mpi.h"
#include "ompi/peruse/peruse.h"
#include "ompi/peruse/peruse-internal.h"
#include "ompi/constants.h"
#include "class/ompi_pointer_array.h"
static opal_list_t peruse_handle_list;
static opal_mutex_t peruse_handle_list_lock;
static int ompi_peruse_initialized = 0;
static void ompi_peruse_handle_construct (ompi_peruse_handle_t* p)
{
OBJ_CONSTRUCT (&(p->lock), opal_mutex_t);
p->active = 0;
p->event = PERUSE_EVENT_INVALID;
p->type = PERUSE_TYPE_INVALID;
p->comm = MPI_COMM_NULL;
/* p->win = MPI_WIN_NULL; */
/* p->file = MPI_FILE_NULL */
p->fn = NULL;
p->param = NULL;
OPAL_THREAD_LOCK (&peruse_handle_list_lock);
opal_list_append (&peruse_handle_list, (opal_list_item_t*)p);
OPAL_THREAD_UNLOCK (&peruse_handle_list_lock);
}
static void ompi_peruse_handle_destruct (ompi_peruse_handle_t* p)
{
OPAL_THREAD_LOCK (&peruse_handle_list_lock);
opal_list_remove_item (&peruse_handle_list, (opal_list_item_t*)p);
OPAL_THREAD_UNLOCK (&peruse_handle_list_lock);
OBJ_DESTRUCT (&(p->lock));
}
OBJ_CLASS_INSTANCE(
ompi_peruse_handle_t,
opal_list_item_t,
ompi_peruse_handle_construct,
ompi_peruse_handle_destruct);
int ompi_peruse_init (void)
{
if (ompi_peruse_initialized)
return OMPI_SUCCESS;
ompi_peruse_initialized = 1;
OBJ_CONSTRUCT (&peruse_handle_list, opal_list_t);
OBJ_CONSTRUCT (&peruse_handle_list_lock, opal_mutex_t);
return OMPI_SUCCESS;
}
int ompi_peruse_finalize (void)
{
OBJ_DESTRUCT (&peruse_handle_list);
OBJ_DESTRUCT (&peruse_handle_list_lock);
return OMPI_SUCCESS;
}