Confused by function names cpuidle_install_idle_handler/cpuidle_uninstall_idle_handler

Anand Moon moon.linux at yahoo.com
Tue Jul 22 10:43:58 EDT 2014


Hi Meraj,

Please look at the following commit this will help clear you confusion

git commit id : a0bfa1373859e9d11dc92561a8667588803e42d8 


patch :0001-cpuidle-stop-depending-on-pm_idle.patch

To generate following patch: 

#git format-patch -1 a0bfa1373859e9d11dc92561a8667588803e42d8

0001-cpuidle-stop-depending-on-pm_idle.patch


-Anand Moon


On Tuesday, July 22, 2014 7:28 PM, Mohammad Merajul Islam Molla <meraj.enigma at gmail.com> wrote:
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

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




More information about the Kernelnewbies mailing list