/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
/*
* (C) 2009 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/
/* This header file contains constants that might end up on the right hand side
* of a #define in mpichconf.h.
*
* In particular, this file must provide any constants that might be used for
* conditional compilation in mpidpre.h, before most of the other headers have
* been included in mpiimpl.h. */
#ifndef MPICHCONFCONST_H_INCLUDED
#define MPICHCONFCONST_H_INCLUDED
#define MPICH_ERROR_MSG_NONE 0
#define MPICH_ERROR_MSG_CLASS 1
#define MPICH_ERROR_MSG_GENERIC 2
#define MPICH_ERROR_MSG_ALL 8
/* -------------------------------------------------------------------- */
/* thread-related constants */
/* -------------------------------------------------------------------- */
/* Define the four ways that we achieve proper thread-safe updates of
* shared structures and services
*
* A configure choice will set MPICH_THREAD_GRANULARITY to one of these values */
/* _INVALID exists to avoid accidental macro evaluations to 0 */
#define MPICH_THREAD_GRANULARITY_INVALID 0
#define MPICH_THREAD_GRANULARITY_GLOBAL 1
#define MPICH_THREAD_GRANULARITY_PER_OBJECT 2
#define MPICH_THREAD_GRANULARITY_LOCK_FREE 3
/* _SINGLE is the "null" granularity, where all processes are single-threaded */
#define MPICH_THREAD_GRANULARITY_SINGLE 4
/* controls the allocation mechanism for MPID_Request handles, which can greatly
* affect concurrency on the critical path */
#define MPIU_HANDLE_ALLOCATION_MUTEX 0
#define MPIU_HANDLE_ALLOCATION_THREAD_LOCAL 1
/* _INVALID exists to avoid accidental macro evaluations to 0 */
#define MPIU_REFCOUNT_INVALID 0
/* _NONE means no concurrency control, such as when using MPI_THREAD_SINGLE */
#define MPIU_REFCOUNT_NONE 1
#define MPIU_REFCOUNT_LOCKFREE 2
#endif /* MPICHCONFCONST_H_INCLUDED */