|  |  | 
|  |  | 
|  |  | 
|  | Supporting multiple CPU idle levels in kernel | 
|  |  | 
|  | cpuidle governors | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | cpuidle governor is policy routine that decides what idle state to enter at | 
|  | any given time. cpuidle core uses different callbacks to the governor. | 
|  |  | 
|  | * enable() to enable governor for a particular device | 
|  | * disable() to disable governor for a particular device | 
|  | * select() to select an idle state to enter | 
|  | * reflect() called after returning from the idle state, which can be used | 
|  | by the governor for some record keeping. | 
|  |  | 
|  | More than one governor can be registered at the same time and | 
|  | users can switch between drivers using /sysfs interface (when enabled). | 
|  | More than one governor part is supported for developers to easily experiment | 
|  | with different governors. By default, most optimal governor based on your | 
|  | kernel configuration and platform will be selected by cpuidle. | 
|  |  | 
|  | Interfaces: | 
|  | extern int cpuidle_register_governor(struct cpuidle_governor *gov); | 
|  | struct cpuidle_governor |