This source file includes following definitions.
- mca_btl_portals4_recv_enable
- mca_btl_portals4_recv_disable
- mca_btl_portals4_recv_block_init
- mca_btl_portals4_recv_block_free
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include "opal_config.h"
22
23 #include "opal/constants.h"
24
25 #include "btl_portals4.h"
26 #include "btl_portals4_recv.h"
27 #include "btl_portals4_frag.h"
28
29
30 OBJ_CLASS_INSTANCE(mca_btl_portals4_recv_block_t,
31 opal_list_item_t,
32 NULL, NULL);
33
34 int
35 mca_btl_portals4_recv_enable(mca_btl_portals4_module_t *btl)
36 {
37 int i;
38
39
40 for (i = 0 ; i < mca_btl_portals4_component.portals_recv_mds_num ; ++i) {
41 mca_btl_portals4_recv_block_t *block =
42 mca_btl_portals4_recv_block_init(btl);
43 if (NULL == block) {
44 mca_btl_portals4_recv_disable(btl);
45 return OPAL_ERROR;
46 }
47 opal_list_append(&(btl->portals_recv_blocks),
48 (opal_list_item_t*) block);
49 mca_btl_portals4_activate_block(block);
50 }
51 return OPAL_SUCCESS;
52 }
53
54 int
55 mca_btl_portals4_recv_disable(mca_btl_portals4_module_t *btl)
56 {
57 opal_list_item_t *item;
58
59 if (opal_list_get_size(&btl->portals_recv_blocks) > 0) {
60 while (NULL !=
61 (item = opal_list_remove_first(&btl->portals_recv_blocks))) {
62 mca_btl_portals4_recv_block_t *block =
63 (mca_btl_portals4_recv_block_t*) item;
64 mca_btl_portals4_recv_block_free(block);
65 }
66 }
67
68 return OPAL_SUCCESS;
69 }
70
71 mca_btl_portals4_recv_block_t*
72 mca_btl_portals4_recv_block_init(mca_btl_portals4_module_t *btl)
73 {
74 mca_btl_portals4_recv_block_t *block;
75
76 block = OBJ_NEW(mca_btl_portals4_recv_block_t);
77 block->btl = btl;
78 block->length = mca_btl_portals4_component.portals_recv_mds_size;
79 block->start = malloc(block->length);
80 if (block->start == NULL) return NULL;
81
82 block->me_h = PTL_INVALID_HANDLE;
83
84 block->full = false;
85 block->pending = 0;
86
87 return block;
88 }
89
90
91 int
92 mca_btl_portals4_recv_block_free(mca_btl_portals4_recv_block_t *block)
93 {
94 if (NULL != block->start) {
95 free(block->start);
96 block->start = NULL;
97 }
98 block->length = 0;
99 block->full = false;
100
101 return OPAL_SUCCESS;
102 }