SURFEX v8.1
General documentation of Surfex
wrap_ftn.c
Go to the documentation of this file.
1 /*
2  * Fortran wrappers for opfla_perfmon
3  */
4 
5 #ifdef PAPI
6 
7 #include <stdlib.h>
8 
9 
10 
11 #define BIND_FTN(upper, lower, su, du, f, sign, params) \
12  void upper sign { f params; } \
13  void lower sign { f params; } \
14  void su sign { f params; } \
15  void du sign { f params; }
16 
17 typedef int ftn_int;
18 
19 static void
20 mpi_init_f(int *ierr)
21 {
22  int argc = 0;
23  char **argv = NULL;
24 
25  *ierr = __wrap_MPI_Init(&argc, &argv);
26 }
27 
28 static void
30 {
31  int argc = 0;
32  char **argv = NULL;
33  int required = 0;
34  int provided = 0;
35 
36  *ierr = __wrap_MPI_Init_thread(&argc, &argv, required, &provided);
37 }
38 
39 static void
40 mpi_finalize_f(int *ierr)
41 {
42  *ierr = __wrap_MPI_Finalize();
43 }
44 
45 BIND_FTN(__wrap_MPI_INIT,
46  __wrap_mpi_init,
47  __wrap_mpi_init_,
48  __wrap_mpi_init__,
49  mpi_init_f,
50  (ftn_int *ierr), (ierr))
51 
52 BIND_FTN(__wrap_MPI_INIT_THREAD,
53  __wrap_mpi_init_thread,
54  __wrap_mpi_init_thread_,
55  __wrap_mpi_init_thread__,
57  (ftn_int *ierr), (ierr))
58 
59 BIND_FTN(__wrap_MPI_FINALIZE,
60  __wrap_mpi_finalize,
61  __wrap_mpi_finalize_,
62  __wrap_mpi_finalize__,
64  (ftn_int *ierr), (ierr))
65 
66 #else
67 
68 void dummy_Wrap_FTN() { }
69 
70 #endif
int ftn_int
Definition: wrap_ftn.c:17
BIND_FTN(__wrap_MPI_INIT, __wrap_mpi_init, __wrap_mpi_init_, __wrap_mpi_init__, mpi_init_f, BIND_FTN((ftn_int *ierr),(ierr))
Definition: wrap_ftn.c:45
int __wrap_MPI_Init_thread(int *argc, char ***argv, int required, int *provided)
static void mpi_init_thread_f(int *ierr)
Definition: wrap_ftn.c:29
int __wrap_MPI_Init(int *argc, char ***argv)
static void mpi_init_f(int *ierr)
Definition: wrap_ftn.c:20
int __wrap_MPI_Finalize()
static void mpi_finalize_f(int *ierr)
Definition: wrap_ftn.c:40