1 /*
2  * Copyright (C) by Argonne National Laboratory
3  *     See COPYRIGHT in top-level directory
4  */
5 
6 /* This header file contains constants that might end up on the right hand side
7  * of a #define in mpichconf.h.
8  *
9  * In particular, this file must provide any constants that might be used for
10  * conditional compilation in mpidpre.h, before most of the other headers have
11  * been included in mpiimpl.h. */
12 #ifndef MPICHCONFCONST_H_INCLUDED
13 #define MPICHCONFCONST_H_INCLUDED
14 
15 #define MPICH_ERROR_MSG__NONE 0
16 #define MPICH_ERROR_MSG__CLASS 1
17 #define MPICH_ERROR_MSG__GENERIC 2
18 #define MPICH_ERROR_MSG__ALL 8
19 
20 /* -------------------------------------------------------------------- */
21 /* thread-related constants */
22 /* -------------------------------------------------------------------- */
23 
24 /* Define the four ways that we achieve proper thread-safe updates of
25  * shared structures and services
26  *
27  * A configure choice will set MPICH_THREAD_GRANULARITY to one of these values */
28 
29 /* _INVALID exists to avoid accidental macro evaluations to 0 */
30 #define MPICH_THREAD_GRANULARITY__INVALID 0
31 #define MPICH_THREAD_GRANULARITY__GLOBAL 1
32 #define MPICH_THREAD_GRANULARITY__POBJ 2
33 #define MPICH_THREAD_GRANULARITY__LOCKFREE 3
34 /* _SINGLE is the "null" granularity, where all processes are single-threaded */
35 #define MPICH_THREAD_GRANULARITY__SINGLE 4
36 #define MPICH_THREAD_GRANULARITY__VCI 5
37 
38 /* Define hashing method to map VCI */
39 #define MPICH_VCI__ZERO 0       /* vci === 0 */
40 #define MPICH_VCI__COMM 1       /* vci stored in communicator structure */
41 #define MPICH_VCI__TAG 2        /* vcis parsed from tag */
42 #define MPICH_VCI__IMPLICIT 3   /* vci from (comm, rank, tag), taking account of hints */
43 #define MPICH_VCI__EXPLICIT 4   /* vci passed down explicitly via parameters (MPIX_xxx or Endpoint rank) */
44 
45 /* _NONE means no concurrency control, such as when using MPI_THREAD_SINGLE */
46 #define MPICH_REFCOUNT__NONE 1
47 #define MPICH_REFCOUNT__LOCKFREE 2
48 
49 /* Possible values for timing */
50 #define MPICH_TIMING_KIND__NONE 0
51 #define MPICH_TIMING_KIND__TIME 1
52 #define MPICH_TIMING_KIND__LOG 2
53 #define MPICH_TIMING_KIND__LOG_DETAILED 3
54 #define MPICH_TIMING_KIND__ALL 4
55 #define MPICH_TIMING_KIND__RUNTIME 5
56 
57 /* Possible values for USE_LOGGING */
58 #define MPICH_LOGGING__NONE 0
59 #define MPICH_LOGGING__RLOG 1
60 #define MPICH_LOGGING__EXTERNAL 4
61 
62 /* Possible values for process state */
63 #define MPICH_MPI_STATE__PRE_INIT 0
64 #define MPICH_MPI_STATE__POST_INIT 1
65 #define MPICH_MPI_STATE__POST_FINALIZED 2
66 /* Internal init states. */
67 #define MPICH_MPI_STATE__IN_INIT 3      /* can call MPIR_Err_return_comm(...) on error */
68 
69 #endif /* MPICHCONFCONST_H_INCLUDED */
70