OpenMPI  0.1.1
base.h
1 /*
2  * Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana
3  * University Research and Technology
4  * Corporation. All rights reserved.
5  * Copyright (c) 2004-2005 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$
13  *
14  * Additional copyrights may follow
15  *
16  * $HEADER$
17  */
18 #ifndef ORTE_FILEM_BASE_H
19 #define ORTE_FILEM_BASE_H
20 
21 #include "orte_config.h"
22 
23 #if !ORTE_DISABLE_FULL_SUPPORT
24 #include "orte/mca/rml/rml.h"
25 #endif
26 
27 #include "orte/mca/filem/filem.h"
28 
29 /*
30  * Global functions for MCA overall FILEM
31  */
32 
33 BEGIN_C_DECLS
34 
35 /**
36  * Initialize the FILEM MCA framework
37  *
38  * @retval ORTE_SUCCESS Upon success
39  * @retval ORTE_ERROR Upon failures
40  *
41  * This function is invoked during orte_init();
42  */
43 ORTE_DECLSPEC int orte_filem_base_open(void);
44 
45 #if !ORTE_DISABLE_FULL_SUPPORT
46 /*
47  * cmds for base receive
48  */
49 typedef uint8_t orte_filem_cmd_flag_t;
50 #define ORTE_FILEM_CMD OPAL_UINT8
51 #define ORTE_FILEM_GET_PROC_NODE_NAME_CMD 1
52 #define ORTE_FILEM_GET_REMOTE_PATH_CMD 2
53 
54  /**
55  * FileM request object maintenance functions
56  */
57  ORTE_DECLSPEC void orte_filem_base_process_set_construct(orte_filem_base_process_set_t *obj);
58  ORTE_DECLSPEC void orte_filem_base_process_set_destruct( orte_filem_base_process_set_t *obj);
59 
60  ORTE_DECLSPEC void orte_filem_base_file_set_construct(orte_filem_base_file_set_t *obj);
61  ORTE_DECLSPEC void orte_filem_base_file_set_destruct( orte_filem_base_file_set_t *obj);
62 
63  ORTE_DECLSPEC void orte_filem_base_construct(orte_filem_base_request_t *obj);
64  ORTE_DECLSPEC void orte_filem_base_destruct( orte_filem_base_request_t *obj);
65 
66 
67  /**
68  * Select an available component.
69  *
70  * @retval ORTE_SUCCESS Upon Success
71  * @retval ORTE_NOT_FOUND If no component can be selected
72  * @retval ORTE_ERROR Upon other failure
73  *
74  */
75  ORTE_DECLSPEC int orte_filem_base_select(void);
76 
77  /**
78  * Finalize the FILEM MCA framework
79  *
80  * @retval ORTE_SUCCESS Upon success
81  * @retval ORTE_ERROR Upon failures
82  *
83  * This function is invoked during orte_finalize();
84  */
85  ORTE_DECLSPEC int orte_filem_base_close(void);
86 
87  /**
88  * Globals
89  */
90  ORTE_DECLSPEC extern int orte_filem_base_output;
91  ORTE_DECLSPEC extern opal_list_t orte_filem_base_components_available;
92  ORTE_DECLSPEC extern orte_filem_base_component_t orte_filem_base_selected_component;
93  ORTE_DECLSPEC extern orte_filem_base_module_t orte_filem;
94  ORTE_DECLSPEC extern bool orte_filem_base_is_active;
95 
96  /**
97  * 'None' component functions
98  * These are to be used when no component is selected.
99  * They just return success, and empty strings as necessary.
100  */
101  ORTE_DECLSPEC int orte_filem_base_none_open(void);
102  ORTE_DECLSPEC int orte_filem_base_none_close(void);
103  ORTE_DECLSPEC int orte_filem_base_none_query(mca_base_module_t **module, int *priority);
104 
105  int orte_filem_base_module_init(void);
106  int orte_filem_base_module_finalize(void);
107 
108  int orte_filem_base_none_put(orte_filem_base_request_t *request);
109  int orte_filem_base_none_put_nb(orte_filem_base_request_t *request);
110  int orte_filem_base_none_get(orte_filem_base_request_t *request);
111  int orte_filem_base_none_get_nb(orte_filem_base_request_t *request);
112  int orte_filem_base_none_rm( orte_filem_base_request_t *request);
113  int orte_filem_base_none_rm_nb( orte_filem_base_request_t *request);
114  int orte_filem_base_none_wait( orte_filem_base_request_t *request);
115  int orte_filem_base_none_wait_all( opal_list_t *request_list);
116 
117  /**
118  * Some utility functions
119  */
120  /* base comm functions */
121  ORTE_DECLSPEC int orte_filem_base_comm_start(void);
122  ORTE_DECLSPEC int orte_filem_base_comm_stop(void);
123  ORTE_DECLSPEC void orte_filem_base_recv(int status, orte_process_name_t* sender,
124  opal_buffer_t* buffer, orte_rml_tag_t tag,
125  void* cbdata);
126 
127 
128  /**
129  * Get Node Name for an ORTE process
130  */
131  ORTE_DECLSPEC int orte_filem_base_get_proc_node_name(orte_process_name_t *proc, char **machine_name);
132  ORTE_DECLSPEC int orte_filem_base_get_remote_path(char **remote_ref, orte_process_name_t *peer, int *flag);
133 
134  /**
135  * Setup request structure
136  */
137  ORTE_DECLSPEC int orte_filem_base_prepare_request(orte_filem_base_request_t *request, int move_type);
138 
139 #endif /* ORTE_DISABLE_FULL_SUPPORT */
140 
141 END_C_DECLS
142 
143 #endif /* ORTE_FILEM_BASE_H */
Common type for all MCA modules.
Definition: mca.h:100
Definition of a file movement request This will allow:
Definition: filem.h:127
Definition: types.h:146
Define a Process Set.
Definition: filem.h:68
Structure for FILEM modules.
Definition: filem.h:336
Structure for FILEM components.
Definition: filem.h:317
Define a File Pair.
Definition: filem.h:93
Runtime Messaging Layer (RML) Communication Interface.
uint32_t orte_rml_tag_t
Message matching tag.
Definition: rml_types.h:220
Definition: opal_list.h:147
Definition: evdns.c:158
Structure for holding a buffer to be used with the RML or OOB subsystems.
Definition: dss_types.h:159
int orte_filem_base_comm_start(void)
Some utility functions.
Definition: filem_base_receive.c:69
Remote File Management (FileM) Interface.