Confused by function names cpuidle_install_idle_handler/cpuidle_uninstall_idle_handler
Mohammad Merajul Islam Molla
meraj.enigma at gmail.com
Tue Jul 22 09:56:53 EDT 2014
Hello,
As mentioned, the code excerpt was from kernel version 3.0.
In recent kernel (version 3.16.0-rc4), the code for the two mentioned
functions looks as below -
/**
* cpuidle_install_idle_handler - installs the cpuidle idle loop handler
*/
void cpuidle_install_idle_handler(void)
{
if (enabled_devices) {
/* Make sure all changes finished before we switch to
new idle */
smp_wmb();
initialized = 1;
}
}
/**
* cpuidle_uninstall_idle_handler - uninstalls the cpuidle idle loop
handler
*/
void cpuidle_uninstall_idle_handler(void)
{
if (enabled_devices) {
initialized = 0;
kick_all_cpus_sync();
}
}
That is the source of confusion. There is no pm_idle handler installed
(or uninstalled) anymore.
--
Thanks,
-Meraj
On Tue, Jul 22, 2014 at 4:54 PM, Mulyadi Santosa
<mulyadi.santosa at gmail.com> wrote:
> On Fri, Jul 18, 2014 at 11:07 PM, Mohammad Merajul Islam Molla
> <meraj.enigma at gmail.com> wrote:
>> Hello,
>>
>> In drivers/cpuidle/cpuidle.c, there are two functions
>> cpuidle_install_idle_handler & cpuidle_uninstall_idle_handler. The
>> names seem confusing to me as they don't install any handler, rather
>> set 'initialized' variable to 1/0.
>>
>> In v3.0 kernel, these functions used to look as below where they
>> installed and uninstalled some handler function -
>>
>> void cpuidle_install_idle_handler(void)
>> 123 {
>> 124 if (enabled_devices && (pm_idle != cpuidle_idle_call)) {
>> 125 /* Make sure all changes finished before we switch
>> to new idle */
>> 126 smp_wmb();
>> 127 pm_idle = cpuidle_idle_call;
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> pm_idle is the callback handler, and it is assigned to
> cpuidle_idle_call. I think this what it means by "install"
>
>
> --
> regards,
>
> Mulyadi Santosa
> Freelance Linux trainer and consultant
>
> blog: the-hydra.blogspot.com
> training: mulyaditraining.blogspot.com
More information about the Kernelnewbies
mailing list