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