Blame test/mpi/rma/mcs_mutex.h

Packit Service c5cf8c
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
Packit Service c5cf8c
/*
Packit Service c5cf8c
 *  (C) 2013 by Argonne National Laboratory.
Packit Service c5cf8c
 *      See COPYRIGHT in top-level directory.
Packit Service c5cf8c
 */
Packit Service c5cf8c
Packit Service c5cf8c
#ifndef MCS_MUTEX_H_INCLUDED
Packit Service c5cf8c
#define MCS_MUTEX_H_INCLUDED
Packit Service c5cf8c
Packit Service c5cf8c
#include <mpi.h>
Packit Service c5cf8c
Packit Service c5cf8c
#define MCS_MUTEX_TAG 100
Packit Service c5cf8c
Packit Service c5cf8c
#ifdef ENABLE_DEBUG
Packit Service c5cf8c
#define debug_print(...) do { printf(__VA_ARGS__); } while (0)
Packit Service c5cf8c
#else
Packit Service c5cf8c
#define debug_print(...)
Packit Service c5cf8c
#endif
Packit Service c5cf8c
Packit Service c5cf8c
struct mcs_mutex_s {
Packit Service c5cf8c
    int tail_rank;
Packit Service c5cf8c
    MPI_Comm comm;
Packit Service c5cf8c
    MPI_Win window;
Packit Service c5cf8c
    int *base;
Packit Service c5cf8c
    MPI_Info win_info;
Packit Service c5cf8c
};
Packit Service c5cf8c
Packit Service c5cf8c
typedef struct mcs_mutex_s *MCS_Mutex;
Packit Service c5cf8c
Packit Service c5cf8c
#define MCS_MTX_ELEM_DISP 0
Packit Service c5cf8c
#define MCS_MTX_TAIL_DISP 1
Packit Service c5cf8c
Packit Service c5cf8c
int MCS_Mutex_create(int tail_rank, MPI_Comm comm, MCS_Mutex * hdl_out);
Packit Service c5cf8c
int MCS_Mutex_free(MCS_Mutex * hdl_ptr);
Packit Service c5cf8c
int MCS_Mutex_lock(MCS_Mutex hdl);
Packit Service c5cf8c
int MCS_Mutex_trylock(MCS_Mutex hdl, int *success);
Packit Service c5cf8c
int MCS_Mutex_unlock(MCS_Mutex hdl);
Packit Service c5cf8c
Packit Service c5cf8c
#endif /* MCS_MUTEX_H_INCLUDED */