1.1 --- a/common.c Sat Jun 04 23:30:36 2022 +0200
1.2 +++ b/common.c Mon Jun 06 00:18:14 2022 +0200
1.3 @@ -390,9 +390,19 @@
1.4
1.5 /* Return the item type name for the given parameter. */
1.6
1.7 -char *item_type_name(struct parameter *param)
1.8 +char *item_type_name(struct parameter *param, enum component_role component,
1.9 + int writing)
1.10 {
1.11 - return param->cls == FPAGE_ITEM ? "fpage" : "capability";
1.12 + if (param->cls == FPAGE_ITEM)
1.13 + {
1.14 + if ((component == CLIENT_ROLE) && (param->specifier & IN_PARAMETER) &&
1.15 + writing)
1.16 + return "receive_fpage";
1.17 + else
1.18 + return "fpage";
1.19 + }
1.20 + else
1.21 + return "capability";
1.22 }
1.23
1.24 /* When copying output items from the message (in the client) or copying into
2.1 --- a/common.h Sat Jun 04 23:30:36 2022 +0200
2.2 +++ b/common.h Mon Jun 06 00:18:14 2022 +0200
2.3 @@ -84,7 +84,7 @@
2.4 /* Message access details. */
2.5
2.6 char *access_name(struct parameter *param, enum component_role component, int writing);
2.7 -char *item_type_name(struct parameter *param);
2.8 +char *item_type_name(struct parameter *param, enum component_role component, int writing);
2.9 char *reference_message(enum component_role component, enum function_role function);
2.10 char *structure_prefix(enum specifier direction);
2.11 int writing_to_message(enum component_role component, enum specifier direction);
3.1 --- a/message.c Sat Jun 04 23:30:36 2022 +0200
3.2 +++ b/message.c Mon Jun 06 00:18:14 2022 +0200
3.3 @@ -62,7 +62,7 @@
3.4 enum function_role function, enum specifier direction,
3.5 enum parameter_class cls, FILE *fp)
3.6 {
3.7 - char *name, *access, *prefix, *addr;
3.8 + char *name, *access, *prefix, *suffix, *addr;
3.9 int writing = writing_to_message(component, direction);
3.10 int index;
3.11
3.12 @@ -98,12 +98,14 @@
3.13 /* For items, perform access operations. */
3.14
3.15 case ITEM_CLASS:
3.16 + suffix = item_type_name(param, component, writing);
3.17 +
3.18 if (writing)
3.19 fprintf(fp, " ipc_message_add_%s(%smsg, %s%s);\n",
3.20 - item_type_name(param), addr, access, name);
3.21 + suffix, addr, access, name);
3.22 else
3.23 fprintf(fp, " ipc_message_import_%s(%smsg, %d, %s%s);\n",
3.24 - item_type_name(param), addr, index, access, name);
3.25 + suffix, addr, index, access, name);
3.26 index++;
3.27 break;
3.28