From f8d86779612fd82bea792ee665ed41e22c1f734e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 10 Oct 2011 03:29:30 +0000 Subject: updated to use new 10.5 API if available, otherwise use API that was deprecated in 10.5 and removed in 10.6 svn path=/trunk/externals/apple/; revision=15562 --- smc.c | 36 +++++++++++++++++++++++++++--------- sudden_motion_sensor.c | 33 ++++++++++++++++++++++++++------- 2 files changed, 53 insertions(+), 16 deletions(-) diff --git a/smc.c b/smc.c index 449a759..e1b60a2 100644 --- a/smc.c +++ b/smc.c @@ -165,15 +165,33 @@ kern_return_t SMCCall(int index, SMCKeyData_t *inputStructure, SMCKeyData_t *out structureInputSize = sizeof(SMCKeyData_t); structureOutputSize = sizeof(SMCKeyData_t); - - return IOConnectMethodStructureIStructureO( - conn, - index, - structureInputSize, - &structureOutputSize, - inputStructure, - outputStructure - ); +#if !defined(__LP64__) + // Check if Mac OS X 10.5 API is available... + if (IOConnectCallStructMethod != NULL) { + // ...and use it if it is. +#endif + return IOConnectCallStructMethod( + conn, // an io_connect_t returned from IOServiceOpen(). + index, // selector of the function to be called via the user client. + inputStructure, // pointer to the input struct parameter. + structureInputSize, // the size of the input structure parameter. + outputStructure, // pointer to the output struct parameter. + &structureOutputSize// pointer to the size of the output structure parameter. + ); +#if !defined(__LP64__) + } + else { + // Otherwise fall back to older API. + return IOConnectMethodStructureIStructureO( + conn, // an io_connect_t returned from IOServiceOpen(). + index, // an index to the function to be called via the user client. + structureInputSize, // the size of the input struct paramter. + &structureOutputSize, // a pointer to the size of the output struct paramter. + inputStructure, // a pointer to the input struct parameter. + outputStructure // a pointer to the output struct parameter. + ); + } +#endif } kern_return_t SMCReadKey(UInt32Char_t key, SMCVal_t *val) diff --git a/sudden_motion_sensor.c b/sudden_motion_sensor.c index 1ea0a87..a9daa89 100644 --- a/sudden_motion_sensor.c +++ b/sudden_motion_sensor.c @@ -142,13 +142,32 @@ FOUND_SENSOR: memset(&inputStructure, 0, sizeof(inputStructure)); memset(&outputStructure, 0, sizeof(outputStructure)); - kern_return = IOConnectMethodStructureIStructureO( - io_connect, - kernel_function, /* index to kernel function */ - structureInputSize, - &structureOutputSize, - &inputStructure, - &outputStructure); +#if !defined(__LP64__) + // Check if Mac OS X 10.5 API is available... + if (IOConnectCallStructMethod != NULL) { + // ...and use it if it is. +#endif + kern_return = IOConnectCallStructMethod( + io_connect, // an io_connect_t returned from IOServiceOpen(). + kernel_function, // selector of the function to be called via the user client. + &inputStructure, // pointer to the input struct parameter. + structureInputSize, // the size of the input structure parameter. + &outputStructure, // pointer to the output struct parameter. + &structureOutputSize// pointer to the size of the output structure parameter. + ); +#if !defined(__LP64__) + } + else { + // Otherwise fall back to older API. + kern_return = IOConnectMethodStructureIStructureO( + io_connect, // an io_connect_t returned from IOServiceOpen(). + kernel_function, // an index to the function to be called via the user client. + structureInputSize, // the size of the input struct paramter. + &structureOutputSize,// a pointer to the size of the output struct paramter. + &inputStructure, // a pointer to the input struct parameter. + &outputStructure); // a pointer to the output struct parameter. + } +#endif if( kern_return == KERN_SUCCESS) { -- cgit v1.2.1