|
| 1 | +/* |
| 2 | + * Copyright (c) 2017 IBM Corporation. All rights reserved. |
| 3 | + * $COPYRIGHT$ |
| 4 | + * |
| 5 | + * Additional copyrights may follow |
| 6 | + * |
| 7 | + * $HEADER$ |
| 8 | + */ |
| 9 | + |
| 10 | +#ifndef OMPI_HOOK_BASE_H |
| 11 | +#define OMPI_HOOK_BASE_H |
| 12 | + |
| 13 | +#include "ompi_config.h" |
| 14 | + |
| 15 | +#include "ompi/mca/mca.h" |
| 16 | +#include "opal/mca/base/mca_base_framework.h" |
| 17 | + |
| 18 | +#include "ompi/mca/hook/hook.h" |
| 19 | + |
| 20 | +BEGIN_C_DECLS |
| 21 | + |
| 22 | +/** |
| 23 | + * Framework struct declaration for this framework |
| 24 | + */ |
| 25 | +OMPI_DECLSPEC extern mca_base_framework_t ompi_hook_base_framework; |
| 26 | + |
| 27 | + |
| 28 | +/** |
| 29 | + * Dynamically register function pointers to be called from outside of the hook |
| 30 | + * framework. For example, a collective component could register a callback |
| 31 | + * at the bottom of init to perform some action. |
| 32 | + */ |
| 33 | +OMPI_DECLSPEC int ompi_hook_base_register_callbacks(ompi_hook_base_component_t *comp); |
| 34 | +OMPI_DECLSPEC int ompi_hook_base_deregister_callbacks(ompi_hook_base_component_t *comp); |
| 35 | + |
| 36 | +/** |
| 37 | + * Wrapper functions matching the interface functions |
| 38 | + */ |
| 39 | +OMPI_DECLSPEC void ompi_hook_base_mpi_initialized_top(int *flag); |
| 40 | +OMPI_DECLSPEC void ompi_hook_base_mpi_initialized_bottom(int *flag); |
| 41 | + |
| 42 | +OMPI_DECLSPEC void ompi_hook_base_mpi_init_thread_top(int *argc, char ***argv, int required, int *provided); |
| 43 | +OMPI_DECLSPEC void ompi_hook_base_mpi_init_thread_bottom(int *argc, char ***argv, int required, int *provided); |
| 44 | + |
| 45 | +OMPI_DECLSPEC void ompi_hook_base_mpi_finalized_top(int *flag); |
| 46 | +OMPI_DECLSPEC void ompi_hook_base_mpi_finalized_bottom(int *flag); |
| 47 | + |
| 48 | +OMPI_DECLSPEC void ompi_hook_base_mpi_init_top(int argc, char **argv, int requested, int *provided); |
| 49 | +OMPI_DECLSPEC void ompi_hook_base_mpi_init_top_post_opal(int argc, char **argv, int requested, int *provided); |
| 50 | +OMPI_DECLSPEC void ompi_hook_base_mpi_init_bottom(int argc, char **argv, int requested, int *provided); |
| 51 | +OMPI_DECLSPEC void ompi_hook_base_mpi_init_error(int argc, char **argv, int requested, int *provided); |
| 52 | + |
| 53 | +OMPI_DECLSPEC void ompi_hook_base_mpi_finalize_top(void); |
| 54 | +OMPI_DECLSPEC void ompi_hook_base_mpi_finalize_bottom(void); |
| 55 | + |
| 56 | +END_C_DECLS |
| 57 | + |
| 58 | +#endif /* OMPI_BASE_HOOK_H */ |
0 commit comments