#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <mach/mach_port.h>
#include <mach/mach_interface.h>
#include <mach/mach_init.h>
#include <IOKit/pwr_mgt/IOPM.h>
#include <IOKit/pwr_mgt/IOPMLib.h>
int
main(int argc, char **argv)
{
mach_port_t master_device_port;
io_connect_t fb;
kern_return_t kr;
int aggressiveness;
unsigned long current_value;
IOReturn err;
if ( (argc != 2) || ((aggressiveness = atoi(argv[1])) < 0) || (aggressiveness > 1000) ) {
printf("Type \"pma \" followed by an aggressiveness factor from 0 to 1000\n");
return 0;
}
kr = IOMasterPort(bootstrap_port,&master_device_port);
if ( kr == kIOReturnSuccess ) {
fb = IOPMFindPowerManagement(master_device_port);
if ( fb != NULL ) {
err = IOPMGetAggressiveness ( fb, kPMSetGeneralAggressiveness, ¤t_value );
if ( err == kIOReturnSuccess ) {
printf("General aggressiveness currently %ld\n",current_value);
}
err = IOPMGetAggressiveness ( fb, kPMSetMinutesToDim, ¤t_value );
if ( err == kIOReturnSuccess ) {
printf("Display aggressiveness currently %ld minutes\n",current_value);
}
err = IOPMGetAggressiveness ( fb, kPMSetMinutesToSpinDown, ¤t_value );
if ( err == kIOReturnSuccess ) {
printf("Disk aggressiveness currently %ld minutes\n",current_value);
}
err = IOPMGetAggressiveness ( fb, kPMSetMinutesToSleep, ¤t_value );
if ( err == kIOReturnSuccess ) {
printf("Sleep aggressiveness currently %ld minutes\n",current_value);
}
err = IOPMSetAggressiveness ( fb, kPMSetGeneralAggressiveness, aggressiveness );
if ( err == kIOReturnSuccess ) {
printf("Power Management aggressiveness set to %d\n",aggressiveness);
return 1;
}
#if 0
err = IOPMSetAggressiveness ( fb, kPMSetMinutesToDim, 10 );
if ( err == kIOReturnSuccess ) {
printf("kPMSetMinutesToDim good\n",aggressiveness);
}
err = IOPMSetAggressiveness ( fb, kPMSetMinutesToSpinDown, 11 );
if ( err == kIOReturnSuccess ) {
printf("kPMSetMinutesToSpinDown good\n",aggressiveness);
}
err = IOPMSetAggressiveness ( fb, kPMSetMinutesToSleep, 12 );
if ( err == kIOReturnSuccess ) {
printf("kPMSetMinutesToSleep good\n",aggressiveness);
return 1;
}
#endif
}
}
printf("That didn't work for some reason\n");
return 0;
}