-kern_return_t is_io_connect_method_scalarI_scalarO(
- io_object_t connect,
- uint32_t index,
- io_scalar_inband_t input,
- mach_msg_type_number_t inputCount,
- io_scalar_inband_t output,
- mach_msg_type_number_t * outputCount )
-{
- IOReturn err;
- uint32_t i;
- io_scalar_inband64_t _input;
- io_scalar_inband64_t _output;
-
- mach_msg_type_number_t struct_outputCnt = 0;
- mach_vm_size_t ool_output_size = 0;
-
- bzero(&_output[0], sizeof(_output));
- for (i = 0; i < inputCount; i++)
- _input[i] = SCALAR64(input[i]);
-
- err = is_io_connect_method(connect, index,
- _input, inputCount,
- NULL, 0,
- 0, 0,
- NULL, &struct_outputCnt,
- _output, outputCount,
- 0, &ool_output_size);
-
- for (i = 0; i < *outputCount; i++)
- output[i] = SCALAR32(_output[i]);
-
- return (err);
-}
-
-kern_return_t shim_io_connect_method_scalarI_scalarO(
- IOExternalMethod * method,
- IOService * object,
- const io_user_scalar_t * input,
- mach_msg_type_number_t inputCount,
- io_user_scalar_t * output,
- mach_msg_type_number_t * outputCount )
-{
- IOMethod func;
- io_scalar_inband_t _output;
- IOReturn err;
- err = kIOReturnBadArgument;
-
- bzero(&_output[0], sizeof(_output));
- do {
-
- if( inputCount != method->count0)
- {
- IOLog("%s:%d %s: IOUserClient inputCount count mismatch 0x%llx 0x%llx\n", __FUNCTION__, __LINE__, object->getName(), (uint64_t)inputCount, (uint64_t)method->count0);
- DTRACE_IO2(iokit_count_mismatch, uint64_t, (uint64_t)inputCount, uint64_t, (uint64_t)method->count0);
- continue;
- }
- if( *outputCount != method->count1)
- {
- IOLog("%s:%d %s: IOUserClient outputCount count mismatch 0x%llx 0x%llx\n", __FUNCTION__, __LINE__, object->getName(), (uint64_t)*outputCount, (uint64_t)method->count1);
- DTRACE_IO2(iokit_count_mismatch, uint64_t, (uint64_t)*outputCount, uint64_t, (uint64_t)method->count1);
- continue;
- }
-
- func = method->func;
-
- switch( inputCount) {
-
- case 6:
- err = (object->*func)( ARG32(input[0]), ARG32(input[1]), ARG32(input[2]),
- ARG32(input[3]), ARG32(input[4]), ARG32(input[5]) );
- break;
- case 5:
- err = (object->*func)( ARG32(input[0]), ARG32(input[1]), ARG32(input[2]),
- ARG32(input[3]), ARG32(input[4]),
- &_output[0] );
- break;
- case 4:
- err = (object->*func)( ARG32(input[0]), ARG32(input[1]), ARG32(input[2]),
- ARG32(input[3]),
- &_output[0], &_output[1] );
- break;
- case 3:
- err = (object->*func)( ARG32(input[0]), ARG32(input[1]), ARG32(input[2]),
- &_output[0], &_output[1], &_output[2] );
- break;
- case 2:
- err = (object->*func)( ARG32(input[0]), ARG32(input[1]),
- &_output[0], &_output[1], &_output[2],
- &_output[3] );
- break;
- case 1:
- err = (object->*func)( ARG32(input[0]),
- &_output[0], &_output[1], &_output[2],
- &_output[3], &_output[4] );
- break;
- case 0:
- err = (object->*func)( &_output[0], &_output[1], &_output[2],
- &_output[3], &_output[4], &_output[5] );
- break;
+kern_return_t
+is_io_connect_method_scalarI_scalarO(
+ io_object_t connect,
+ uint32_t index,
+ io_scalar_inband_t input,
+ mach_msg_type_number_t inputCount,
+ io_scalar_inband_t output,
+ mach_msg_type_number_t * outputCount )
+{
+ IOReturn err;
+ uint32_t i;
+ io_scalar_inband64_t _input;
+ io_scalar_inband64_t _output;
+
+ mach_msg_type_number_t struct_outputCnt = 0;
+ mach_vm_size_t ool_output_size = 0;
+
+ bzero(&_output[0], sizeof(_output));
+ for (i = 0; i < inputCount; i++) {
+ _input[i] = SCALAR64(input[i]);
+ }
+
+ err = is_io_connect_method(connect, index,
+ _input, inputCount,
+ NULL, 0,
+ 0, 0,
+ NULL, &struct_outputCnt,
+ _output, outputCount,
+ 0, &ool_output_size);