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