AMPI: Add fsglobals (filesystem) and pipglobals (Process-in-Process) privatization...
[charm.git] / src / libs / ck-libs / ampi / ampi_funcptr_shim.C
1 // This object can be linked to AMPI binaries in place of the RTS.
2
3 #ifndef AMPI_USE_FUNCPTR
4 # error This file requires -ampi-funcptr-shim.
5 #endif
6 #include "ampi_funcptr.h"
7
8
9 // Provide the definitions of function pointers corresponding to the entire AMPI API.
10
11 #define AMPI_FUNC AMPI_FUNCPTR_DEF
12 #define AMPI_FUNC_NOIMPL AMPI_FUNC
13 #define AMPI_CUSTOM_FUNC AMPI_CUSTOM_FUNCPTR_DEF
14
15 #include "ampi_functions.h"
16
17 #undef AMPI_FUNC
18 #undef AMPI_FUNC_NOIMPL
19 #undef AMPI_CUSTOM_FUNC
20
21
22 // Provide an interface to link the function pointers at runtime.
23
24 extern "C" void AMPI_FuncPtr_Unpack(struct AMPI_FuncPtr_Transport * x)
25 {
26 #define AMPI_CUSTOM_FUNC(return_type, function_name, ...) \
27   function_name = x->function_name;
28 #if AMPI_HAVE_PMPI
29   #define AMPI_FUNC(return_type, function_name, ...) \
30     function_name = x->function_name; \
31     P##function_name = x->P##function_name;
32 #else
33   #define AMPI_FUNC AMPI_CUSTOM_FUNC
34 #endif
35 #define AMPI_FUNC_NOIMPL AMPI_FUNC
36
37 #include "ampi_functions.h"
38
39 #undef AMPI_FUNC
40 #undef AMPI_FUNC_NOIMPL
41 #undef AMPI_CUSTOM_FUNC
42 }
43
44
45 // Provide a stub entry point so the program will link without any special effort.
46
47 #include <stdio.h>
48
49 #ifdef main
50 # undef main
51 #endif
52 int main()
53 {
54   fprintf(stderr, "Do not run this binary directly!\n");
55   return 1;
56 }