Index: src/shared/srpc/invoke.c |
=================================================================== |
--- src/shared/srpc/invoke.c (revision 3898) |
+++ src/shared/srpc/invoke.c (working copy) |
@@ -146,46 +146,46 @@ |
/* |
* The first phase is the args[] vector construction. |
*/ |
-#define SCALAR_ARG(arg, field, va, impl_type) \ |
- (arg)->u.field = va_arg(va, impl_type) |
-#define ARRAY_ARG(arg, field, array_name, va, impl_type) \ |
- (arg)->u.field.count = va_arg(va, uint32_t); \ |
- (arg)->u.field.array_name = va_arg(va, impl_type) |
-#define BOOL_ARG(arg, field, va, impl_type) \ |
+#define SCALAR_ARG(arg, field, va, impl_type) \ |
+ (arg)->field = va_arg(va, impl_type) |
+#define ARRAY_ARG(arg, array_name, va, impl_type) \ |
+ (arg)->u.count = va_arg(va, uint32_t); \ |
+ (arg)->array_name = va_arg(va, impl_type) |
+#define BOOL_ARG(arg, field, va, impl_type) \ |
(arg)->u.bval = (va_arg(va, impl_type) != 0) |
/* |
* The second phase is the rets[] vector construction before invocation. |
*/ |
-#define SCALAR_RETINIT(arg, field, va, impl_type) \ |
- (arg)->u.field = (impl_type) 0; \ |
+#define SCALAR_RETINIT(arg, field, va, impl_type) \ |
+ (arg)->field = (impl_type) 0; \ |
SKIP(va, impl_type *) |
-#define ARRAY_RETINIT(arg, field, array_name, va, impl_type) \ |
- (arg)->u.field.count = *va_arg(va, uint32_t*); \ |
- (arg)->u.field.array_name = va_arg(va, impl_type) |
-#define BOOL_RETINIT(arg, field, va, impl_type) \ |
+#define ARRAY_RETINIT(arg, array_name, va, impl_type) \ |
+ (arg)->u.count = *va_arg(va, uint32_t*); \ |
+ (arg)->array_name = va_arg(va, impl_type) |
+#define BOOL_RETINIT(arg, field, va, impl_type) \ |
SKIP(va, impl_type *) |
/* |
* The third phase is skipping the args[] after invocation. |
*/ |
-#define SCALAR_SKIP(arg, field, va, impl_type) \ |
+#define SCALAR_SKIP(arg, field, va, impl_type) \ |
SKIP(va, impl_type) |
-#define ARRAY_SKIP(arg, field, array_name, va, impl_type) \ |
- SKIP(va, uint32_t) \ |
+#define ARRAY_SKIP(arg, array_name, va, impl_type) \ |
+ SKIP(va, uint32_t) \ |
SKIP(va, impl_type) |
-#define BOOL_SKIP(arg, field, va, impl_type) \ |
+#define BOOL_SKIP(arg, field, va, impl_type) \ |
SCALAR_SKIP(arg, field, va, impl_type) |
/* |
* The fourth phase is copying the rets[] into the va_args after invocation. |
*/ |
-#define SCALAR_RET(arg, field, va, impl_type) \ |
- *va_arg(va, impl_type *) = (arg)->u.field |
-#define ARRAY_RET(arg, field, array_name, va, impl_type) \ |
- ARRAY_SKIP(arg, field, array_name, va, impl_type) |
-#define BOOL_RET(arg, field, va, impl_type) \ |
- *va_arg(va, impl_type *) = ((arg)->u.field != 0) |
+#define SCALAR_RET(arg, field, va, impl_type) \ |
+ *va_arg(va, impl_type *) = (arg)->field |
+#define ARRAY_RET(arg, array_name, va, impl_type) \ |
+ ARRAY_SKIP(arg, array_name, va, impl_type) |
+#define BOOL_RET(arg, field, va, impl_type) \ |
+ *va_arg(va, impl_type *) = ((arg)->field != 0) |
/* |
* All the phases consist of a loop around a switch enumerating types. |
@@ -193,34 +193,34 @@ |
#define ARGRET_SWITCH(phase, va, arg) \ |
switch (*p) { \ |
case NACL_SRPC_ARG_TYPE_BOOL: \ |
- BOOL_##phase(arg, bval, va, int); \ |
+ BOOL_##phase(arg, u.bval, va, int); \ |
break; \ |
case NACL_SRPC_ARG_TYPE_CHAR_ARRAY: \ |
- ARRAY_##phase(arg, caval, carr, va, char*); \ |
+ ARRAY_##phase(arg, arrays.carr, va, char*); \ |
break; \ |
case NACL_SRPC_ARG_TYPE_DOUBLE: \ |
- SCALAR_##phase(arg, dval, va, double); \ |
+ SCALAR_##phase(arg, u.dval, va, double); \ |
break; \ |
case NACL_SRPC_ARG_TYPE_DOUBLE_ARRAY: \ |
- ARRAY_##phase(arg, daval, darr, va, double*); \ |
+ ARRAY_##phase(arg, arrays.darr, va, double*); \ |
break; \ |
case NACL_SRPC_ARG_TYPE_HANDLE: \ |
- SCALAR_##phase(arg, hval, va, NaClSrpcImcDescType); \ |
+ SCALAR_##phase(arg, u.hval, va, NaClSrpcImcDescType); \ |
break; \ |
case NACL_SRPC_ARG_TYPE_INT: \ |
- SCALAR_##phase(arg, ival, va, int32_t); \ |
+ SCALAR_##phase(arg, u.ival, va, int32_t); \ |
break; \ |
case NACL_SRPC_ARG_TYPE_INT_ARRAY: \ |
- ARRAY_##phase(arg, iaval, iarr, va, int32_t*); \ |
+ ARRAY_##phase(arg, arrays.iarr, va, int32_t*); \ |
break; \ |
case NACL_SRPC_ARG_TYPE_LONG: \ |
- SCALAR_##phase(arg, lval, va, int64_t); \ |
+ SCALAR_##phase(arg, u.lval, va, int64_t); \ |
break; \ |
case NACL_SRPC_ARG_TYPE_LONG_ARRAY: \ |
- ARRAY_##phase(arg, laval, larr, va, int64_t*); \ |
+ ARRAY_##phase(arg, arrays.larr, va, int64_t*); \ |
break; \ |
case NACL_SRPC_ARG_TYPE_STRING: \ |
- SCALAR_##phase(arg, sval.str, va, char*); \ |
+ SCALAR_##phase(arg, arrays.str, va, char*); \ |
break; \ |
/* \ |
* The two cases below are added to avoid warnings, \ |