1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 #ifndef TEST_SERVER_C
  14 #define TEST_SERVER_C
  15 
  16 #include "pmix_server.h"
  17 #include "test_common.h"
  18 
  19 
  20 typedef enum {
  21     CMD_BARRIER_REQUEST,
  22     CMD_BARRIER_RESPONSE,
  23     CMD_FENCE_CONTRIB,
  24     CMD_FENCE_COMPLETE,
  25     CMD_DMDX_REQUEST,
  26     CMD_DMDX_RESPONSE
  27 } server_cmd_t;
  28 
  29 typedef struct {
  30     int dst_id;
  31     int src_id;
  32     int cmd;
  33     size_t size;
  34 } msg_hdr_t;
  35 
  36 struct server_info_t
  37 {
  38     pmix_list_item_t super;
  39     pid_t pid;
  40     int idx;
  41     int rd_fd;
  42     int wr_fd;
  43     pmix_event_t *evread;
  44     pmix_lock_t lock;
  45     pmix_modex_cbfunc_t modex_cbfunc;
  46     void *cbdata;
  47 };
  48 typedef struct server_info_t server_info_t;
  49 PMIX_EXPORT PMIX_CLASS_DECLARATION(server_info_t);
  50 
  51 struct server_nspace_t
  52 {
  53     pmix_list_item_t super;
  54     char name[PMIX_MAX_NSLEN+1];
  55     size_t ntasks; 
  56     size_t ltasks; 
  57     int *task_map;
  58 };
  59 typedef struct server_nspace_t server_nspace_t;
  60 PMIX_EXPORT PMIX_CLASS_DECLARATION(server_nspace_t);
  61 
  62 extern int my_server_id;
  63 extern pmix_list_t *server_list;
  64 extern server_info_t *my_server_info;
  65 extern pmix_list_t *server_nspace;
  66 
  67 int server_init(test_params *params);
  68 int server_finalize(test_params *params);
  69 int server_barrier(void);
  70 int server_fence_contrib(char *data, size_t ndata,
  71                          pmix_modex_cbfunc_t cbfunc, void *cbdata);
  72 int server_dmdx_get(const char *nspace, int rank,
  73                     pmix_modex_cbfunc_t cbfunc, void *cbdata);
  74 int server_launch_clients(int local_size, int univ_size, int base_rank,
  75                    test_params *params, char *** client_env, char ***base_argv);
  76 
  77 
  78 #endif 
  79