1 /*
2  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
3  *                         University Research and Technology
4  *                         Corporation.  All rights reserved.
5  * Copyright (c) 2004-2006 The University of Tennessee and The University
6  *                         of Tennessee Research Foundation.  All rights
7  *                         reserved.
8  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
9  *                         University of Stuttgart.  All rights reserved.
10  * Copyright (c) 2004-2005 The Regents of the University of California.
11  *                         All rights reserved.
12  * Copyright (c) 2006      Sun Microsystems, Inc.  All rights reserved.
13  * Copyright (c) 2008      Cisco Systems, Inc.  All rights reserved.
14  * $COPYRIGHT$
15  *
16  * Additional copyrights may follow
17  *
18  * $HEADER$
19  */
20 /**
21  * @file
22  */
23 #ifndef MCA_BTL_BASE_H
24 #define MCA_BTL_BASE_H
25 
26 #include "opal_config.h"
27 #include "opal/class/opal_list.h"
28 #include "opal/mca/mca.h"
29 #include "opal/mca/btl/btl.h"
30 
31 BEGIN_C_DECLS
32 
33 struct mca_btl_base_selected_module_t {
34   opal_list_item_t super;
35   mca_btl_base_component_t *btl_component;
36   mca_btl_base_module_t *btl_module;
37 };
38 typedef struct mca_btl_base_selected_module_t mca_btl_base_selected_module_t;
39 
40 
41 /* holds the recv call back function to be called by the btl on
42  * a receive.
43  */
44 struct mca_btl_base_recv_reg_t {
45     mca_btl_base_module_recv_cb_fn_t cbfunc;
46     void* cbdata;
47 };
48 typedef struct mca_btl_base_recv_reg_t mca_btl_base_recv_reg_t;
49 
50 
51 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(mca_btl_base_selected_module_t);
52 
53 /*
54  * Global functions for MCA: overall BTL open and close
55  */
56 
57 OPAL_DECLSPEC  int mca_btl_base_select(bool enable_progress_threads, bool enable_mpi_threads);
58 OPAL_DECLSPEC  void mca_btl_base_dump(
59     struct mca_btl_base_module_t*,
60     struct mca_btl_base_endpoint_t*,
61     int verbose);
62 OPAL_DECLSPEC  int mca_btl_base_param_register(mca_base_component_t *version,
63         mca_btl_base_module_t *module);
64 OPAL_DECLSPEC  int mca_btl_base_param_verify(mca_btl_base_module_t *module);
65 
66 /*
67  * Globals
68  */
69 extern char* mca_btl_base_include;
70 extern char* mca_btl_base_exclude;
71 extern int mca_btl_base_warn_component_unused;
72 extern int mca_btl_base_already_opened;
73 OPAL_DECLSPEC extern opal_list_t mca_btl_base_modules_initialized;
74 OPAL_DECLSPEC extern bool mca_btl_base_thread_multiple_override;
75 
76 OPAL_DECLSPEC extern mca_base_framework_t opal_btl_base_framework;
77 
78 extern mca_base_var_enum_flag_t *mca_btl_base_flag_enum;
79 extern mca_base_var_enum_flag_t *mca_btl_base_atomic_enum;
80 
81 END_C_DECLS
82 
83 #endif /* MCA_BTL_BASE_H */
84