A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Stop implementing bit fields manually, and ask the C compiler to do so for me
[simgrid.git]
/
src
/
gras
/
DataDesc
/
ddt_exchange.c
diff --git
a/src/gras/DataDesc/ddt_exchange.c
b/src/gras/DataDesc/ddt_exchange.c
index
2b4ff84
..
bc64789
100644
(file)
--- a/
src/gras/DataDesc/ddt_exchange.c
+++ b/
src/gras/DataDesc/ddt_exchange.c
@@
-3,7
+3,7
@@
/* ddt_exchange - send/recv data described */
/* Copyright (c) 2003 Olivier Aumage. */
/* ddt_exchange - send/recv data described */
/* Copyright (c) 2003 Olivier Aumage. */
-/* Copyright (c) 2003, 2004
Martin Quinson.
*/
+/* Copyright (c) 2003, 2004
, 2005 Martin Quinson.
*/
/* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
/* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
@@
-63,7
+63,7
@@
gras_dd_recv_int(gras_socket_t sock, int r_arch, int *i) {
TRY(gras_trp_chunk_recv(sock, (char*)ptr, int_type->size[r_arch]));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(int_type,1,r_arch, ptr,i));
TRY(gras_trp_chunk_recv(sock, (char*)ptr, int_type->size[r_arch]));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(int_type,1,r_arch, ptr,i));
-
xbt_
free(ptr);
+ free(ptr);
}
DEBUG1("recv_int(%d)",*i);
}
DEBUG1("recv_int(%d)",*i);
@@
-101,20
+101,19
@@
gras_dd_alloc_ref(xbt_dict_t refs,
l_data = xbt_malloc((size_t)size);
*l_ref = l_data;
l_data = xbt_malloc((size_t)size);
*l_ref = l_data;
- DEBUG2("l_data=%p, &l_data=%p",(void*)l_data,(void*)&l_data);
-
- DEBUG3("alloc_ref: r_ref=%p; *r_ref=%p, r_len=%ld",
+ DEBUG5("alloc_ref: l_data=%p, &l_data=%p; r_ref=%p; *r_ref=%p, r_len=%ld",
+ (void*)l_data,(void*)&l_data,
(void*)r_ref, (void*)(r_ref?*r_ref:NULL), r_len);
if (detect_cycle && r_ref && !gras_dd_is_r_null( r_ref, r_len)) {
void *ptr = xbt_malloc(sizeof(void *));
(void*)r_ref, (void*)(r_ref?*r_ref:NULL), r_len);
if (detect_cycle && r_ref && !gras_dd_is_r_null( r_ref, r_len)) {
void *ptr = xbt_malloc(sizeof(void *));
- CRITICAL0("
detect_cycle
");
+ CRITICAL0("
Check for cycles
");
memcpy(ptr,l_ref, sizeof(void *));
memcpy(ptr,l_ref, sizeof(void *));
- DEBUG2("Insert
%p under
%p",*(void**)ptr, *(void**)r_ref);
+ DEBUG2("Insert
l_ref=%p under r_ref=
%p",*(void**)ptr, *(void**)r_ref);
if (detect_cycle)
if (detect_cycle)
- xbt_dict_set_ext(refs,(const char *) r_ref, r_len, ptr,
xbt_free_fct
);
+ xbt_dict_set_ext(refs,(const char *) r_ref, r_len, ptr,
free
);
}
return no_error;
}
}
return no_error;
}
@@
-152,7
+151,7
@@
gras_datadesc_send_rec(gras_socket_t sock,
type->name, gras_datadesc_cat_names[type->category_code]);
if (type->send) {
type->name, gras_datadesc_cat_names[type->category_code]);
if (type->send) {
- type->send(state,data);
+ type->send(
type,
state,data);
}
switch (type->category_code) {
}
switch (type->category_code) {
@@
-176,14
+175,13
@@
gras_datadesc_send_rec(gras_socket_t sock,
sub_type = field->type;
sub_type = field->type;
- if (field->
pre
)
- field->
pre(
state,field_data);
+ if (field->
send
)
+ field->
send(type,
state,field_data);
VERB1("Send field %s",field->name);
VERB1("Send field %s",field->name);
- TRY(gras_datadesc_send_rec(sock,state,refs,sub_type, field_data, detect_cycle || sub_type->cycle));
+ TRY(gras_datadesc_send_rec(sock,state,refs,sub_type, field_data,
+ detect_cycle || sub_type->cycle));
- if (field->post)
- field->post(state,field_data);
}
VERB1("<< Sent all fields of the structure %s", type->name);
}
VERB1("<< Sent all fields of the structure %s", type->name);
@@
-201,7
+199,7
@@
gras_datadesc_send_rec(gras_socket_t sock,
"Please call gras_datadesc_declare_union_close on %s before sending it",
type->name);
/* retrieve the field number */
"Please call gras_datadesc_declare_union_close on %s before sending it",
type->name);
/* retrieve the field number */
- field_num = union_data.selector(state, data);
+ field_num = union_data.selector(
type,
state, data);
xbt_assert1(field_num > 0,
"union field selector of %s gave a negative value",
xbt_assert1(field_num > 0,
"union field selector of %s gave a negative value",
@@
-218,14
+216,12
@@
gras_datadesc_send_rec(gras_socket_t sock,
field = xbt_dynar_get_as(union_data.fields, field_num, gras_dd_cat_field_t);
sub_type = field->type;
field = xbt_dynar_get_as(union_data.fields, field_num, gras_dd_cat_field_t);
sub_type = field->type;
- if (field->pre)
- field->pre(state,data);
-
- TRY(gras_datadesc_send_rec(sock,state,refs, sub_type, data, detect_cycle || sub_type->cycle));
-
- if (field->post)
- field->post(state,data);
+ if (field->send)
+ field->send(type,state,data);
+ TRY(gras_datadesc_send_rec(sock,state,refs, sub_type, data,
+ detect_cycle || sub_type->cycle));
+
break;
}
break;
}
@@
-240,7
+236,7
@@
gras_datadesc_send_rec(gras_socket_t sock,
/* Detect the referenced type and send it to peer if needed */
sub_type = ref_data.type;
if (sub_type == NULL) {
/* Detect the referenced type and send it to peer if needed */
sub_type = ref_data.type;
if (sub_type == NULL) {
- sub_type = (*ref_data.selector)(state,data);
+ sub_type = (*ref_data.selector)(
type,
state,data);
TRY(gras_dd_send_int(sock, sub_type->code));
}
TRY(gras_dd_send_int(sock, sub_type->code));
}
@@
-265,7
+261,8
@@
gras_datadesc_send_rec(gras_socket_t sock,
VERB1("Sending data referenced at %p", (void*)*ref);
if (detect_cycle)
xbt_dict_set_ext(refs, (char*)ref, sizeof(void*), ref, NULL);
VERB1("Sending data referenced at %p", (void*)*ref);
if (detect_cycle)
xbt_dict_set_ext(refs, (char*)ref, sizeof(void*), ref, NULL);
- TRY(gras_datadesc_send_rec(sock,state,refs, sub_type, *ref, detect_cycle || sub_type->cycle));
+ TRY(gras_datadesc_send_rec(sock,state,refs, sub_type, *ref,
+ detect_cycle || sub_type->cycle));
} else if (errcode == no_error) {
VERB1("Not sending data referenced at %p (already done)", (void*)*ref);
} else if (errcode == no_error) {
VERB1("Not sending data referenced at %p (already done)", (void*)*ref);
@@
-287,7
+284,7
@@
gras_datadesc_send_rec(gras_socket_t sock,
/* determine and send the element count */
count = array_data.fixed_size;
if (count == 0) {
/* determine and send the element count */
count = array_data.fixed_size;
if (count == 0) {
- count = array_data.dynamic_size(state,data);
+ count = array_data.dynamic_size(
type,
state,data);
xbt_assert1(count >=0,
"Invalid (negative) array size for type %s",type->name);
TRY(gras_dd_send_int(sock, count));
xbt_assert1(count >=0,
"Invalid (negative) array size for type %s",type->name);
TRY(gras_dd_send_int(sock, count));
@@
-311,7
+308,8
@@
gras_datadesc_send_rec(gras_socket_t sock,
} else {
for (cpt=0; cpt<count; cpt++) {
} else {
for (cpt=0; cpt<count; cpt++) {
- TRY(gras_datadesc_send_rec(sock,state,refs, sub_type, ptr, detect_cycle || sub_type->cycle));
+ TRY(gras_datadesc_send_rec(sock,state,refs, sub_type, ptr,
+ detect_cycle || sub_type->cycle));
ptr += elm_size;
}
}
ptr += elm_size;
}
}
@@
-332,16
+330,18
@@
gras_datadesc_send_rec(gras_socket_t sock,
*
*/
xbt_error_t gras_datadesc_send(gras_socket_t sock,
*
*/
xbt_error_t gras_datadesc_send(gras_socket_t sock,
- gras_datadesc_type_t type,
- void *src) {
+ gras_datadesc_type_t type,
+ void *src) {
xbt_error_t errcode;
gras_cbps_t state;
xbt_dict_t refs; /* all references already sent */
xbt_error_t errcode;
gras_cbps_t state;
xbt_dict_t refs; /* all references already sent */
+ xbt_assert0(type,"called with NULL type descriptor");
+
refs = xbt_dict_new();
state = gras_cbps_new();
refs = xbt_dict_new();
state = gras_cbps_new();
-
+
errcode = gras_datadesc_send_rec(sock,state,refs,type,(char*)src, type->cycle);
xbt_dict_free(&refs);
errcode = gras_datadesc_send_rec(sock,state,refs,type,(char*)src, type->cycle);
xbt_dict_free(&refs);
@@
-393,7
+393,7
@@
gras_datadesc_recv_rec(gras_socket_t sock,
TRY(gras_trp_chunk_recv(sock, (char*)ptr, type->size[r_arch]));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(type,1,r_arch, ptr,l_data));
TRY(gras_trp_chunk_recv(sock, (char*)ptr, type->size[r_arch]));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(type,1,r_arch, ptr,l_data));
-
xbt_
free(ptr);
+ free(ptr);
}
break;
}
break;
@@
-416,6
+416,10
@@
gras_datadesc_recv_rec(gras_socket_t sock,
r_arch,NULL,0,
field_data,-1,
detect_cycle || sub_type->cycle));
r_arch,NULL,0,
field_data,-1,
detect_cycle || sub_type->cycle));
+
+ if (field->recv)
+ field->recv(type,state,(void*)l_data);
+
}
VERB1("<< Received all fields of the structure %s", type->name);
}
VERB1("<< Received all fields of the structure %s", type->name);
@@
-448,8
+452,11
@@
gras_datadesc_recv_rec(gras_socket_t sock,
TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
r_arch,NULL,0,
TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
r_arch,NULL,0,
- l_data,-1,
+ l_data,-1,
detect_cycle || sub_type->cycle));
detect_cycle || sub_type->cycle));
+ if (field->recv)
+ field->recv(type,state,l_data);
+
break;
}
break;
}
@@
-484,7
+491,7
@@
gras_datadesc_recv_rec(gras_socket_t sock,
VERB1("Not receiving data remotely referenced @%p since it's NULL",
*(void **)r_ref);
*(void**)l_data = NULL;
VERB1("Not receiving data remotely referenced @%p since it's NULL",
*(void **)r_ref);
*(void**)l_data = NULL;
-
xbt_
free(r_ref);
+ free(r_ref);
break;
}
break;
}
@@
-527,8
+534,9
@@
gras_datadesc_recv_rec(gras_socket_t sock,
TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
r_arch,r_ref,pointer_type->size[r_arch],
TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
r_arch,r_ref,pointer_type->size[r_arch],
- (char*)l_referenced, subsubcount,
+ (char*)l_referenced, subsubcount,
detect_cycle || sub_type->cycle));
detect_cycle || sub_type->cycle));
+
*(void**)l_data=l_referenced;
VERB3("'%s' remotely referenced at %p locally at %p",
sub_type->name, *(void**)r_ref, l_referenced);
*(void**)l_data=l_referenced;
VERB3("'%s' remotely referenced at %p locally at %p",
sub_type->name, *(void**)r_ref, l_referenced);
@@
-542,7
+550,7
@@
gras_datadesc_recv_rec(gras_socket_t sock,
} else {
return errcode;
}
} else {
return errcode;
}
-
xbt_
free(r_ref);
+ free(r_ref);
break;
}
break;
}
@@
-580,7
+588,7
@@
gras_datadesc_recv_rec(gras_socket_t sock,
sub_type->size[r_arch] * count));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(sub_type,count,r_arch, ptr,l_data));
sub_type->size[r_arch] * count));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(sub_type,count,r_arch, ptr,l_data));
-
xbt_
free(ptr);
+ free(ptr);
}
} else if (sub_type->category_code == e_gras_datadesc_type_cat_array &&
sub_type->category.array_data.fixed_size > 0 &&
}
} else if (sub_type->category_code == e_gras_datadesc_type_cat_array &&
sub_type->category.array_data.fixed_size > 0 &&
@@
-604,7
+612,7
@@
gras_datadesc_recv_rec(gras_socket_t sock,
subsub_type->size[r_arch] * count*array_data.fixed_size));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(subsub_type,count*array_data.fixed_size,r_arch, ptr,l_data));
subsub_type->size[r_arch] * count*array_data.fixed_size));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(subsub_type,count*array_data.fixed_size,r_arch, ptr,l_data));
-
xbt_
free(ptr);
+ free(ptr);
}
}
@@
-618,6
+626,7
@@
gras_datadesc_recv_rec(gras_socket_t sock,
TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
r_arch, NULL, 0, ptr,-1,
detect_cycle || sub_type->cycle));
TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
r_arch, NULL, 0, ptr,-1,
detect_cycle || sub_type->cycle));
+
ptr += elm_size;
}
}
ptr += elm_size;
}
}
@@
-629,7
+638,7
@@
gras_datadesc_recv_rec(gras_socket_t sock,
}
if (type->recv)
}
if (type->recv)
- type->recv(state,l_data);
+ type->recv(
type,
state,l_data);
return no_error;
}
return no_error;
}
@@
-654,6
+663,7
@@
gras_datadesc_recv(gras_socket_t sock,
refs = xbt_dict_new();
state = gras_cbps_new();
refs = xbt_dict_new();
state = gras_cbps_new();
+ xbt_assert0(type,"called with NULL type descriptor");
errcode = gras_datadesc_recv_rec(sock, state, refs, type,
r_arch, NULL, 0,
(char *) dst,-1,
errcode = gras_datadesc_recv_rec(sock, state, refs, type,
r_arch, NULL, 0,
(char *) dst,-1,
@@
-713,14
+723,15
@@
gras_datadesc_gen_send_rec(gras_socket_t sock,
sub_type = field->type;
sub_type = field->type;
- xbt_assert0(!field->
pre
, "Callbacks not implemented in IDL compiler");
+ xbt_assert0(!field->
send
, "Callbacks not implemented in IDL compiler");
printf(" VERB1(\"Send field %s\");\n",field->name);
printf(" data += %lu;\n",field->offset[GRAS_THISARCH]);
printf(" VERB1(\"Send field %s\");\n",field->name);
printf(" data += %lu;\n",field->offset[GRAS_THISARCH]);
- TRY(gras_datadesc_gen_send_rec(sock,state,refs,sub_type, field_data, detect_cycle || sub_type->cycle));
+ TRY(gras_datadesc_gen_send_rec(sock,state,refs,sub_type, field_data,
+ detect_cycle || sub_type->cycle));
printf(" data -= %lu;\n",field->offset[GRAS_THISARCH]);
printf(" data -= %lu;\n",field->offset[GRAS_THISARCH]);
- xbt_assert0(!field->
post
, "Callbacks not implemented in IDL compiler");
+ xbt_assert0(!field->
recv
, "Callbacks not implemented in IDL compiler");
}
printf(" VERB1(\"<< Sent all fields of the structure %s\"", type->name);
}
printf(" VERB1(\"<< Sent all fields of the structure %s\"", type->name);
@@
-754,14
+765,12
@@
gras_datadesc_gen_send_rec(gras_socket_t sock,
field = xbt_dynar_get_as(union_data.fields, field_num, gras_dd_cat_field_t);
sub_type = field->type;
field = xbt_dynar_get_as(union_data.fields, field_num, gras_dd_cat_field_t);
sub_type = field->type;
- if (field->pre)
- field->pre(state,data);
-
- TRY(gras_datadesc_gen_send_rec(sock,state,refs, sub_type, data, detect_cycle || sub_type->cycle));
-
- if (field->post)
- field->post(state,data);
+ if (field->send)
+ field->send(state,data);
+ TRY(gras_datadesc_gen_send_rec(sock,state,refs, sub_type, data,
+ detect_cycle || sub_type->cycle));
+
break;
}
break;
}
@@
-801,7
+810,8
@@
gras_datadesc_gen_send_rec(gras_socket_t sock,
VERB1("Sending data referenced at %p", (void*)*ref);
if (detect_cycle)
xbt_dict_set_ext(refs, (char*)ref, sizeof(void*), ref, NULL);
VERB1("Sending data referenced at %p", (void*)*ref);
if (detect_cycle)
xbt_dict_set_ext(refs, (char*)ref, sizeof(void*), ref, NULL);
- TRY(gras_datadesc_gen_send_rec(sock,state,refs, sub_type, *ref, detect_cycle || sub_type->cycle));
+ TRY(gras_datadesc_gen_send_rec(sock,state,refs, sub_type, *ref,
+ detect_cycle || sub_type->cycle));
} else if (errcode == no_error) {
VERB1("Not sending data referenced at %p (already done)", (void*)*ref);
} else if (errcode == no_error) {
VERB1("Not sending data referenced at %p (already done)", (void*)*ref);
@@
-847,7
+857,8
@@
gras_datadesc_gen_send_rec(gras_socket_t sock,
} else {
for (cpt=0; cpt<count; cpt++) {
} else {
for (cpt=0; cpt<count; cpt++) {
- TRY(gras_datadesc_gen_send_rec(sock,state,refs, sub_type, ptr, detect_cycle || sub_type->cycle));
+ TRY(gras_datadesc_gen_send_rec(sock,state,refs, sub_type, ptr,
+ detect_cycle || sub_type->cycle));
ptr += elm_size;
}
}
ptr += elm_size;
}
}
@@
-880,7
+891,8
@@
xbt_error_t gras_datadesc_gen_send(gras_socket_t sock,
printf("xbt_error_t gras_%s_send(gras_socket_t sock,void *dst){\n",
type->name);
printf("xbt_error_t gras_%s_send(gras_socket_t sock,void *dst){\n",
type->name);
- errcode = gras_datadesc_gen_send_rec(sock,state,refs,type,(char*)src, type->cycle);
+ errcode = gras_datadesc_gen_send_rec(sock,state,refs,type,(char*)src,
+ detect_cycle || sub_type->cycle);
printf("}\n");
xbt_dict_free(&refs);
printf("}\n");
xbt_dict_free(&refs);
@@
-932,7
+944,7
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
TRY(gras_trp_chunk_recv(sock, (char*)ptr, type->size[r_arch]));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(type,1,r_arch, ptr,l_data));
TRY(gras_trp_chunk_recv(sock, (char*)ptr, type->size[r_arch]));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(type,1,r_arch, ptr,l_data));
-
xbt_
free(ptr);
+ free(ptr);
}
break;
}
break;
@@
-953,8
+965,11
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
r_arch,NULL,0,
TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
r_arch,NULL,0,
- field_data,-1,
+ field_data,-1,
detect_cycle || sub_type->cycle));
detect_cycle || sub_type->cycle));
+ if (field->recv)
+ field->recv(type,state,data);
+
}
VERB1("<< Received all fields of the structure %s", type->name);
}
VERB1("<< Received all fields of the structure %s", type->name);
@@
-987,8
+1002,11
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
r_arch,NULL,0,
TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
r_arch,NULL,0,
- l_data,-1,
+ l_data,-1,
detect_cycle || sub_type->cycle));
detect_cycle || sub_type->cycle));
+ if (field->recv)
+ field->recv(type,state,data);
+
break;
}
break;
}
@@
-1023,7
+1041,7
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
VERB1("Not receiving data remotely referenced @%p since it's NULL",
*(void **)r_ref);
*(void**)l_data = NULL;
VERB1("Not receiving data remotely referenced @%p since it's NULL",
*(void **)r_ref);
*(void**)l_data = NULL;
-
xbt_
free(r_ref);
+ free(r_ref);
break;
}
break;
}
@@
-1066,8
+1084,9
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
r_arch,r_ref,pointer_type->size[r_arch],
TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
r_arch,r_ref,pointer_type->size[r_arch],
- (char*)l_referenced, subsubcount,
+ (char*)l_referenced, subsubcount,
detect_cycle || sub_type->cycle));
detect_cycle || sub_type->cycle));
+
*(void**)l_data=l_referenced;
VERB3("'%s' remotely referenced at %p locally at %p",
sub_type->name, *(void**)r_ref, l_referenced);
*(void**)l_data=l_referenced;
VERB3("'%s' remotely referenced at %p locally at %p",
sub_type->name, *(void**)r_ref, l_referenced);
@@
-1081,7
+1100,7
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
} else {
return errcode;
}
} else {
return errcode;
}
-
xbt_
free(r_ref);
+ free(r_ref);
break;
}
break;
}
@@
-1119,7
+1138,7
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
sub_type->size[r_arch] * count));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(sub_type,count,r_arch, ptr,l_data));
sub_type->size[r_arch] * count));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(sub_type,count,r_arch, ptr,l_data));
-
xbt_
free(ptr);
+ free(ptr);
}
} else if (sub_type->category_code == e_gras_datadesc_type_cat_array &&
sub_type->category.array_data.fixed_size > 0 &&
}
} else if (sub_type->category_code == e_gras_datadesc_type_cat_array &&
sub_type->category.array_data.fixed_size > 0 &&
@@
-1143,7
+1162,7
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
subsub_type->size[r_arch] * count*array_data.fixed_size));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(subsub_type,count*array_data.fixed_size,r_arch, ptr,l_data));
subsub_type->size[r_arch] * count*array_data.fixed_size));
if (r_arch != GRAS_THISARCH)
TRY(gras_dd_convert_elm(subsub_type,count*array_data.fixed_size,r_arch, ptr,l_data));
-
xbt_
free(ptr);
+ free(ptr);
}
}
@@
-1157,6
+1176,7
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
r_arch, NULL, 0, ptr,-1,
detect_cycle || sub_type->cycle));
TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
r_arch, NULL, 0, ptr,-1,
detect_cycle || sub_type->cycle));
+
ptr += elm_size;
}
}
ptr += elm_size;
}
}
@@
-1168,7
+1188,7
@@
gras_datadesc_gen_recv_rec(gras_socket_t sock,
}
if (type->recv)
}
if (type->recv)
- type->recv(state,l_data);
+ type->recv(
type,
state,l_data);
return no_error;
}
return no_error;
}
@@
-1199,7
+1219,7
@@
gras_datadesc_gen_recv(gras_socket_t sock,
errcode = gras_datadesc_gen_recv_rec(sock, state, refs, type,
r_arch, NULL, 0,
(char *) dst,-1,
errcode = gras_datadesc_gen_recv_rec(sock, state, refs, type,
r_arch, NULL, 0,
(char *) dst,-1,
- type->cycle);
+ sub_type->cycle);
printf("}\n");
xbt_dict_free(&refs);
printf("}\n");
xbt_dict_free(&refs);