1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #ifndef PMIX_PTL_BASE_H_
25 #define PMIX_PTL_BASE_H_
26
27 #include <src/include/pmix_config.h>
28
29
30 #ifdef HAVE_SYS_TIME_H
31 #include <sys/time.h>
32 #endif
33 #ifdef HAVE_STRING_H
34 #include <string.h>
35 #endif
36
37 #include "src/class/pmix_pointer_array.h"
38 #include "src/mca/mca.h"
39 #include "src/mca/base/pmix_mca_base_framework.h"
40
41 #include "src/include/pmix_globals.h"
42 #include "src/mca/ptl/ptl.h"
43
44
45 BEGIN_C_DECLS
46
47
48
49
50 PMIX_EXPORT extern pmix_mca_base_framework_t pmix_ptl_base_framework;
51
52
53
54
55
56
57 PMIX_EXPORT pmix_status_t pmix_ptl_base_select(void);
58
59
60
61
62 struct pmix_ptl_base_active_t {
63 pmix_list_item_t super;
64 pmix_status_t pri;
65 pmix_ptl_base_component_t *component;
66 pmix_ptl_module_t *module;
67 };
68 typedef struct pmix_ptl_base_active_t pmix_ptl_base_active_t;
69 PMIX_CLASS_DECLARATION(pmix_ptl_base_active_t);
70
71
72
73 struct pmix_ptl_globals_t {
74 pmix_list_t actives;
75 bool initialized;
76 pmix_list_t posted_recvs;
77 pmix_list_t unexpected_msgs;
78 int stop_thread[2];
79 bool listen_thread_active;
80 pmix_list_t listeners;
81 uint32_t current_tag;
82 size_t max_msg_size;
83 };
84 typedef struct pmix_ptl_globals_t pmix_ptl_globals_t;
85
86 PMIX_EXPORT extern pmix_ptl_globals_t pmix_ptl_globals;
87
88
89 PMIX_EXPORT pmix_status_t pmix_ptl_base_set_notification_cbfunc(pmix_ptl_cbfunc_t cbfunc);
90 PMIX_EXPORT char* pmix_ptl_base_get_available_modules(void);
91 PMIX_EXPORT pmix_ptl_module_t* pmix_ptl_base_assign_module(void);
92 PMIX_EXPORT pmix_status_t pmix_ptl_base_connect_to_peer(struct pmix_peer_t *peer,
93 pmix_info_t info[], size_t ninfo);
94
95 PMIX_EXPORT pmix_status_t pmix_ptl_base_register_recv(struct pmix_peer_t *peer,
96 pmix_ptl_cbfunc_t cbfunc,
97 pmix_ptl_tag_t tag);
98 PMIX_EXPORT pmix_status_t pmix_ptl_base_cancel_recv(struct pmix_peer_t *peer,
99 pmix_ptl_tag_t tag);
100
101 PMIX_EXPORT pmix_status_t pmix_ptl_base_start_listening(pmix_info_t *info, size_t ninfo);
102 PMIX_EXPORT void pmix_ptl_base_stop_listening(void);
103 PMIX_EXPORT pmix_status_t pmix_ptl_base_setup_fork(const pmix_proc_t *proc, char ***env);
104
105
106 PMIX_EXPORT void pmix_ptl_base_send(int sd, short args, void *cbdata);
107 PMIX_EXPORT void pmix_ptl_base_send_recv(int sd, short args, void *cbdata);
108 PMIX_EXPORT void pmix_ptl_base_send_handler(int sd, short flags, void *cbdata);
109 PMIX_EXPORT void pmix_ptl_base_recv_handler(int sd, short flags, void *cbdata);
110 PMIX_EXPORT void pmix_ptl_base_process_msg(int fd, short flags, void *cbdata);
111 PMIX_EXPORT pmix_status_t pmix_ptl_base_set_nonblocking(int sd);
112 PMIX_EXPORT pmix_status_t pmix_ptl_base_set_blocking(int sd);
113 PMIX_EXPORT pmix_status_t pmix_ptl_base_send_blocking(int sd, char *ptr, size_t size);
114 PMIX_EXPORT pmix_status_t pmix_ptl_base_recv_blocking(int sd, char *data, size_t size);
115 PMIX_EXPORT pmix_status_t pmix_ptl_base_connect(struct sockaddr_storage *addr,
116 pmix_socklen_t len, int *fd);
117 PMIX_EXPORT void pmix_ptl_base_connection_handler(int sd, short args, void *cbdata);
118 PMIX_EXPORT pmix_status_t pmix_ptl_base_send_connect_ack(int sd);
119 PMIX_EXPORT pmix_status_t pmix_ptl_base_recv_connect_ack(int sd);
120 PMIX_EXPORT void pmix_ptl_base_lost_connection(pmix_peer_t *peer, pmix_status_t err);
121
122
123 END_C_DECLS
124
125 #endif