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@xxxxxxxxx> wrote: > On Fri, Jul 18, 2014 at 11:07 PM, Mohammad Merajul Islam Molla > <meraj.enigma@xxxxxxxxx> 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@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies