static int __init cpuidle_init(void) { int ret; if (cpuidle_disabled()) return -ENODEV; ret = cpuidle_add_interface(cpu_subsys.dev_root); if (ret) return ret; latency_notifier_init(&cpuidle_latency_notifier); return 0; }
/** * cpuidle_init - core initializer */ static int __init cpuidle_init(void) { int ret; if (cpuidle_disabled()) return -ENODEV; ret = cpuidle_add_class_sysfs(&cpu_sysdev_class); if (ret) return ret; latency_notifier_init(&cpuidle_latency_notifier); return 0; }
/** * cpuidle_register_driver - registers a driver * @drv: the driver */ int cpuidle_register_driver(struct cpuidle_driver *drv) { if (!drv || !drv->state_count) return -EINVAL; if (cpuidle_disabled()) return -ENODEV; spin_lock(&cpuidle_driver_lock); if (cpuidle_curr_driver) { spin_unlock(&cpuidle_driver_lock); return -EBUSY; } cpuidle_curr_driver = drv; spin_unlock(&cpuidle_driver_lock); return 0; }
/** * cpuidle_register_governor - registers a governor * @gov: the governor */ int cpuidle_register_governor(struct cpuidle_governor *gov) { int ret = -EEXIST; if (!gov || !gov->select) return -EINVAL; if (cpuidle_disabled()) return -ENODEV; mutex_lock(&cpuidle_lock); if (__cpuidle_find_governor(gov->name) == NULL) { ret = 0; pax_list_add_tail((struct list_head *)&gov->governor_list, &cpuidle_governors); if (!cpuidle_curr_governor || cpuidle_curr_governor->rating < gov->rating) cpuidle_switch_governor(gov); } mutex_unlock(&cpuidle_lock); return ret; }