summaryrefslogtreecommitdiff
path: root/src/VBox/Main/src-server/darwin/HostPowerDarwin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Main/src-server/darwin/HostPowerDarwin.cpp')
-rw-r--r--src/VBox/Main/src-server/darwin/HostPowerDarwin.cpp118
1 files changed, 59 insertions, 59 deletions
diff --git a/src/VBox/Main/src-server/darwin/HostPowerDarwin.cpp b/src/VBox/Main/src-server/darwin/HostPowerDarwin.cpp
index a83297e4..5e68d02b 100644
--- a/src/VBox/Main/src-server/darwin/HostPowerDarwin.cpp
+++ b/src/VBox/Main/src-server/darwin/HostPowerDarwin.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2008 Oracle Corporation
+ * Copyright (C) 2008-2013 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -25,43 +25,43 @@
#define POWER_SOURCE_OUTLET 1
#define POWER_SOURCE_BATTERY 2
-HostPowerServiceDarwin::HostPowerServiceDarwin (VirtualBox *aVirtualBox)
- : HostPowerService (aVirtualBox)
- , mThread (NULL)
- , mRootPort (MACH_PORT_NULL)
- , mNotifyPort (nil)
- , mRunLoop (nil)
- , mCritical (false)
+HostPowerServiceDarwin::HostPowerServiceDarwin(VirtualBox *aVirtualBox)
+ : HostPowerService(aVirtualBox)
+ , mThread(NULL)
+ , mRootPort(MACH_PORT_NULL)
+ , mNotifyPort(nil)
+ , mRunLoop(nil)
+ , mCritical(false)
{
/* Create the new worker thread. */
- int rc = RTThreadCreate (&mThread, HostPowerServiceDarwin::powerChangeNotificationThread, this, 65536,
- RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "MainPower");
+ int rc = RTThreadCreate(&mThread, HostPowerServiceDarwin::powerChangeNotificationThread, this, 65536,
+ RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "MainPower");
if (RT_FAILURE(rc))
- LogFlow (("RTThreadCreate failed with %Rrc\n", rc));
+ LogFlow(("RTThreadCreate failed with %Rrc\n", rc));
}
HostPowerServiceDarwin::~HostPowerServiceDarwin()
{
/* Jump out of the run loop. */
- CFRunLoopStop (mRunLoop);
+ CFRunLoopStop(mRunLoop);
/* Remove the sleep notification port from the application runloop. */
- CFRunLoopRemoveSource (CFRunLoopGetCurrent(),
- IONotificationPortGetRunLoopSource (mNotifyPort),
- kCFRunLoopCommonModes);
+ CFRunLoopRemoveSource(CFRunLoopGetCurrent(),
+ IONotificationPortGetRunLoopSource(mNotifyPort),
+ kCFRunLoopCommonModes);
/* Deregister for system sleep notifications. */
- IODeregisterForSystemPower (&mNotifierObject);
+ IODeregisterForSystemPower(&mNotifierObject);
/* IORegisterForSystemPower implicitly opens the Root Power Domain
* IOService so we close it here. */
- IOServiceClose (mRootPort);
+ IOServiceClose(mRootPort);
/* Destroy the notification port allocated by IORegisterForSystemPower */
- IONotificationPortDestroy (mNotifyPort);
+ IONotificationPortDestroy(mNotifyPort);
}
-DECLCALLBACK(int) HostPowerServiceDarwin::powerChangeNotificationThread (RTTHREAD /* ThreadSelf */, void *pInstance)
+DECLCALLBACK(int) HostPowerServiceDarwin::powerChangeNotificationThread(RTTHREAD /* ThreadSelf */, void *pInstance)
{
- HostPowerServiceDarwin *pPowerObj = static_cast<HostPowerServiceDarwin *> (pInstance);
+ HostPowerServiceDarwin *pPowerObj = static_cast<HostPowerServiceDarwin *>(pInstance);
/* We have to initial set the critical state of the battery, cause we want
* not the HostPowerService to inform about that state when a VM starts.
@@ -69,19 +69,19 @@ DECLCALLBACK(int) HostPowerServiceDarwin::powerChangeNotificationThread (RTTHREA
pPowerObj->checkBatteryCriticalLevel();
/* Register to receive system sleep notifications */
- pPowerObj->mRootPort = IORegisterForSystemPower (pPowerObj, &pPowerObj->mNotifyPort,
- HostPowerServiceDarwin::powerChangeNotificationHandler,
- &pPowerObj->mNotifierObject);
+ pPowerObj->mRootPort = IORegisterForSystemPower(pPowerObj, &pPowerObj->mNotifyPort,
+ HostPowerServiceDarwin::powerChangeNotificationHandler,
+ &pPowerObj->mNotifierObject);
if (pPowerObj->mRootPort == MACH_PORT_NULL)
{
- LogFlow (("IORegisterForSystemPower failed\n"));
+ LogFlow(("IORegisterForSystemPower failed\n"));
return VERR_NOT_SUPPORTED;
}
pPowerObj->mRunLoop = CFRunLoopGetCurrent();
/* Add the notification port to the application runloop */
- CFRunLoopAddSource (pPowerObj->mRunLoop,
- IONotificationPortGetRunLoopSource (pPowerObj->mNotifyPort),
- kCFRunLoopCommonModes);
+ CFRunLoopAddSource(pPowerObj->mRunLoop,
+ IONotificationPortGetRunLoopSource(pPowerObj->mNotifyPort),
+ kCFRunLoopCommonModes);
/* Register for all battery change events. The handler will check for low
* power events itself. */
@@ -96,10 +96,10 @@ DECLCALLBACK(int) HostPowerServiceDarwin::powerChangeNotificationThread (RTTHREA
return VINF_SUCCESS;
}
-void HostPowerServiceDarwin::powerChangeNotificationHandler (void *pvData, io_service_t /* service */, natural_t messageType, void *pMessageArgument)
+void HostPowerServiceDarwin::powerChangeNotificationHandler(void *pvData, io_service_t /* service */, natural_t messageType, void *pMessageArgument)
{
- HostPowerServiceDarwin *pPowerObj = static_cast<HostPowerServiceDarwin *> (pvData);
- Log (( "powerChangeNotificationHandler: messageType %08lx, arg %08lx\n", (long unsigned int)messageType, (long unsigned int)pMessageArgument));
+ HostPowerServiceDarwin *pPowerObj = static_cast<HostPowerServiceDarwin *>(pvData);
+ Log(( "powerChangeNotificationHandler: messageType %08lx, arg %08lx\n", (long unsigned int)messageType, (long unsigned int)pMessageArgument));
switch (messageType)
{
@@ -113,18 +113,18 @@ void HostPowerServiceDarwin::powerChangeNotificationHandler (void *pvData, io_se
* you don't acknowledge this power change by calling either
* IOAllowPowerChange or IOCancelPowerChange, the system will
* wait 30 seconds then go to sleep. */
- IOAllowPowerChange (pPowerObj->mRootPort, reinterpret_cast<long> (pMessageArgument));
+ IOAllowPowerChange(pPowerObj->mRootPort, reinterpret_cast<long>(pMessageArgument));
break;
}
case kIOMessageSystemWillSleep:
{
/* The system will go for sleep. */
- pPowerObj->notify (HostPowerEvent_Suspend);
+ pPowerObj->notify(Reason_HostSuspend);
/* If you do not call IOAllowPowerChange or IOCancelPowerChange to
* acknowledge this message, sleep will be delayed by 30 seconds.
* NOTE: If you call IOCancelPowerChange to deny sleep it returns
* kIOReturnSuccess, however the system WILL still go to sleep. */
- IOAllowPowerChange (pPowerObj->mRootPort, reinterpret_cast<long> (pMessageArgument));
+ IOAllowPowerChange(pPowerObj->mRootPort, reinterpret_cast<long>(pMessageArgument));
break;
}
case kIOMessageSystemWillPowerOn:
@@ -135,7 +135,7 @@ void HostPowerServiceDarwin::powerChangeNotificationHandler (void *pvData, io_se
case kIOMessageSystemHasPoweredOn:
{
/* System has finished the wake up process. */
- pPowerObj->notify (HostPowerEvent_Resume);
+ pPowerObj->notify(Reason_HostResume);
break;
}
default:
@@ -143,11 +143,11 @@ void HostPowerServiceDarwin::powerChangeNotificationHandler (void *pvData, io_se
}
}
-void HostPowerServiceDarwin::lowPowerHandler (void *pvData)
+void HostPowerServiceDarwin::lowPowerHandler(void *pvData)
{
- HostPowerServiceDarwin *pPowerObj = static_cast<HostPowerServiceDarwin *> (pvData);
+ HostPowerServiceDarwin *pPowerObj = static_cast<HostPowerServiceDarwin *>(pvData);
- /* Following role for sending the BatteryLow event (5% is critical):
+ /* Following role for sending the BatteryLow event(5% is critical):
* - Not at VM start even if the battery is in an critical state already.
* - When the power cord is removed so the power supply change from AC to
* battery & the battery is in an critical state nothing is triggered.
@@ -156,15 +156,15 @@ void HostPowerServiceDarwin::lowPowerHandler (void *pvData)
* changed from normal to critical. The state transition from critical to
* normal triggers nothing. */
bool fCriticalStateChanged = false;
- pPowerObj->checkBatteryCriticalLevel (&fCriticalStateChanged);
+ pPowerObj->checkBatteryCriticalLevel(&fCriticalStateChanged);
if (fCriticalStateChanged)
- pPowerObj->notify (HostPowerEvent_BatteryLow);
+ pPowerObj->notify(Reason_HostBatteryLow);
}
-void HostPowerServiceDarwin::checkBatteryCriticalLevel (bool *pfCriticalChanged)
+void HostPowerServiceDarwin::checkBatteryCriticalLevel(bool *pfCriticalChanged)
{
CFTypeRef pBlob = IOPSCopyPowerSourcesInfo();
- CFArrayRef pSources = IOPSCopyPowerSourcesList (pBlob);
+ CFArrayRef pSources = IOPSCopyPowerSourcesList(pBlob);
CFDictionaryRef pSource = NULL;
const void *psValue;
@@ -172,30 +172,30 @@ void HostPowerServiceDarwin::checkBatteryCriticalLevel (bool *pfCriticalChanged)
int powerSource = POWER_SOURCE_OUTLET;
bool critical = false;
- if (CFArrayGetCount (pSources) > 0)
+ if (CFArrayGetCount(pSources) > 0)
{
- for (int i = 0; i < CFArrayGetCount (pSources); ++i)
+ for (int i = 0; i < CFArrayGetCount(pSources); ++i)
{
- pSource = IOPSGetPowerSourceDescription (pBlob, CFArrayGetValueAtIndex (pSources, i));
+ pSource = IOPSGetPowerSourceDescription(pBlob, CFArrayGetValueAtIndex(pSources, i));
/* If the source is empty skip over to the next one. */
if (!pSource)
continue;
/* Skip all power sources which are currently not present like a
* second battery. */
- if (CFDictionaryGetValue (pSource, CFSTR (kIOPSIsPresentKey)) == kCFBooleanFalse)
+ if (CFDictionaryGetValue(pSource, CFSTR(kIOPSIsPresentKey)) == kCFBooleanFalse)
continue;
/* Only internal power types are of interest. */
- result = CFDictionaryGetValueIfPresent (pSource, CFSTR (kIOPSTransportTypeKey), &psValue);
+ result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSTransportTypeKey), &psValue);
if (result &&
- CFStringCompare ((CFStringRef)psValue, CFSTR (kIOPSInternalType), 0) == kCFCompareEqualTo)
+ CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSInternalType), 0) == kCFCompareEqualTo)
{
/* First check which power source we are connect on. */
- result = CFDictionaryGetValueIfPresent (pSource, CFSTR (kIOPSPowerSourceStateKey), &psValue);
+ result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSPowerSourceStateKey), &psValue);
if (result &&
- CFStringCompare ((CFStringRef)psValue, CFSTR (kIOPSACPowerValue), 0) == kCFCompareEqualTo)
+ CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSACPowerValue), 0) == kCFCompareEqualTo)
powerSource = POWER_SOURCE_OUTLET;
else if (result &&
- CFStringCompare ((CFStringRef)psValue, CFSTR (kIOPSBatteryPowerValue), 0) == kCFCompareEqualTo)
+ CFStringCompare((CFStringRef)psValue, CFSTR(kIOPSBatteryPowerValue), 0) == kCFCompareEqualTo)
powerSource = POWER_SOURCE_BATTERY;
int curCapacity = 0;
@@ -203,22 +203,22 @@ void HostPowerServiceDarwin::checkBatteryCriticalLevel (bool *pfCriticalChanged)
float remCapacity = 0.0f;
/* Fetch the current capacity value of the power source */
- result = CFDictionaryGetValueIfPresent (pSource, CFSTR (kIOPSCurrentCapacityKey), &psValue);
+ result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSCurrentCapacityKey), &psValue);
if (result)
- CFNumberGetValue ((CFNumberRef)psValue, kCFNumberSInt32Type, &curCapacity);
+ CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &curCapacity);
/* Fetch the maximum capacity value of the power source */
- result = CFDictionaryGetValueIfPresent (pSource, CFSTR (kIOPSMaxCapacityKey), &psValue);
+ result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSMaxCapacityKey), &psValue);
if (result)
- CFNumberGetValue ((CFNumberRef)psValue, kCFNumberSInt32Type, &maxCapacity);
+ CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &maxCapacity);
/* Calculate the remaining capacity in percent */
remCapacity = ((float)curCapacity/(float)maxCapacity * 100.0);
/* Check for critical. 5 percent is default. */
int criticalValue = 5;
- result = CFDictionaryGetValueIfPresent (pSource, CFSTR (kIOPSDeadWarnLevelKey), &psValue);
+ result = CFDictionaryGetValueIfPresent(pSource, CFSTR(kIOPSDeadWarnLevelKey), &psValue);
if (result)
- CFNumberGetValue ((CFNumberRef)psValue, kCFNumberSInt32Type, &criticalValue);
+ CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &criticalValue);
critical = (remCapacity < criticalValue);
/* We have to take action only if we are on battery, the
* previous state wasn't critical, the state has changed & the
@@ -228,14 +228,14 @@ void HostPowerServiceDarwin::checkBatteryCriticalLevel (bool *pfCriticalChanged)
mCritical != critical &&
pfCriticalChanged)
*pfCriticalChanged = true;
- Log (("checkBatteryCriticalLevel: Remains: %d.%d%% Critical: %d Critical State Changed: %d\n", (int)remCapacity, (int)(remCapacity * 10) % 10, critical, pfCriticalChanged?*pfCriticalChanged:-1));
+ Log(("checkBatteryCriticalLevel: Remains: %d.%d%% Critical: %d Critical State Changed: %d\n", (int)remCapacity, (int)(remCapacity * 10) % 10, critical, pfCriticalChanged?*pfCriticalChanged:-1));
}
}
}
/* Save the new state */
mCritical = critical;
- CFRelease (pBlob);
- CFRelease (pSources);
+ CFRelease(pBlob);
+ CFRelease(pSources);
}