2006-03-23 08:00:55 +03:00
|
|
|
/*
|
2006-04-07 10:03:32 +04:00
|
|
|
* Copyright (c) 2004-2006 The University of Tennessee and The University
|
2006-03-23 08:00:55 +03:00
|
|
|
* of Tennessee Research Foundation. All rights
|
|
|
|
* reserved.
|
2006-04-07 10:03:32 +04:00
|
|
|
* Copyright (c) 2004-2006 High Performance Computing Center Stuttgart,
|
2006-03-23 08:00:55 +03:00
|
|
|
* 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 int ompi_peruse_initialized = 0;
|
|
|
|
|
2006-04-07 10:03:32 +04:00
|
|
|
static void ompi_peruse_handle_construct (ompi_peruse_handle_t* p)
|
2006-03-23 08:00:55 +03:00
|
|
|
{
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2006-04-07 10:03:32 +04:00
|
|
|
static void ompi_peruse_handle_destruct (ompi_peruse_handle_t* p)
|
2006-03-23 08:00:55 +03:00
|
|
|
{
|
|
|
|
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));
|
|
|
|
}
|
|
|
|
|
2006-04-07 10:03:32 +04:00
|
|
|
OBJ_CLASS_INSTANCE(
|
|
|
|
ompi_peruse_handle_t,
|
|
|
|
opal_list_item_t,
|
|
|
|
ompi_peruse_handle_construct,
|
|
|
|
ompi_peruse_handle_destruct);
|
|
|
|
|
2006-03-23 08:00:55 +03:00
|
|
|
|
|
|
|
int ompi_peruse_init (void)
|
|
|
|
{
|
|
|
|
if (ompi_peruse_initialized)
|
|
|
|
return OMPI_SUCCESS;
|
|
|
|
ompi_peruse_initialized = 1;
|
|
|
|
|
|
|
|
OBJ_CONSTRUCT (&peruse_handle_list, opal_list_t);
|
|
|
|
|
|
|
|
return OMPI_SUCCESS;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int ompi_peruse_finalize (void)
|
|
|
|
{
|
|
|
|
OBJ_DESTRUCT (&peruse_handle_list);
|
|
|
|
return OMPI_SUCCESS;
|
|
|
|
}
|