本文整理汇总了C++中cpufreq_register_notifier函数的典型用法代码示例。如果您正苦于以下问题:C++ cpufreq_register_notifier函数的具体用法?C++ cpufreq_register_notifier怎么用?C++ cpufreq_register_notifier使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cpufreq_register_notifier函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: cpufreq_stats_init
static int __init cpufreq_stats_init(void)
{
int ret;
unsigned int cpu;
spin_lock_init(&cpufreq_stats_lock);
ret = cpufreq_register_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER);
if (ret)
return ret;
ret = cpufreq_register_notifier(¬ifier_trans_block,
CPUFREQ_TRANSITION_NOTIFIER);
if (ret) {
cpufreq_unregister_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER);
return ret;
}
register_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
for_each_online_cpu(cpu) {
cpufreq_update_policy(cpu);
}
create_all_freq_table();
ret = sysfs_create_file(cpufreq_global_kobject,
&_attr_all_time_in_state.attr);
if (ret)
pr_warn("Error creating sysfs file for cpufreq stats\n");
return 0;
}
开发者ID:MiniBlu,项目名称:cm11_kernel_htc_msm8974a3ul,代码行数:32,代码来源:cpufreq_stats.c
示例2: cpufreq_stats_init
static int __init cpufreq_stats_init(void)
{
int ret;
unsigned int cpu;
spin_lock_init(&cpufreq_stats_lock);
ret = cpufreq_register_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER);
if (ret)
return ret;
ret = cpufreq_register_notifier(¬ifier_trans_block,
CPUFREQ_TRANSITION_NOTIFIER);
if (ret) {
cpufreq_unregister_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER);
return ret;
}
register_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
for_each_online_cpu(cpu) {
cpufreq_update_policy(cpu);
}
ret = sysfs_create_group(cpufreq_global_kobject, &overall_stats_attr_group);
return 0;
}
开发者ID:Yannicked,项目名称:htc-m7,代码行数:28,代码来源:cpufreq_stats.c
示例3: cpufreq_stats_init
static int __init cpufreq_stats_init(void)
{
int ret;
unsigned int cpu;
spin_lock_init(&cpufreq_stats_lock);
ret = cpufreq_register_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER);
if (ret)
return ret;
for_each_online_cpu(cpu)
cpufreq_stats_create_table(cpu);
ret = cpufreq_register_notifier(¬ifier_trans_block,
CPUFREQ_TRANSITION_NOTIFIER);
if (ret) {
cpufreq_unregister_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER);
for_each_online_cpu(cpu)
cpufreq_stats_free_table(cpu);
return ret;
}
create_all_freq_table();
ret = cpufreq_sysfs_create_file(&_attr_all_time_in_state.attr);
if (ret)
pr_warn("Cannot create sysfs file for cpufreq stats\n");
ret = cpufreq_sysfs_create_file(&_attr_current_in_state.attr);
if (ret)
pr_warn("Cannot create sysfs file for cpufreq current stats\n");
return 0;
}
开发者ID:chrisc93,项目名称:android_kernel_bullhead,代码行数:35,代码来源:cpufreq_stats.c
示例4: cpufreq_stats_init
static int
__init cpufreq_stats_init(void)
{
int ret;
unsigned int cpu;
spin_lock_init(&cpufreq_stats_lock);
if ((ret = cpufreq_register_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER)))
return ret;
if ((ret = cpufreq_register_notifier(¬ifier_trans_block,
CPUFREQ_TRANSITION_NOTIFIER))) {
cpufreq_unregister_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER);
return ret;
}
register_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
for_each_online_cpu(cpu) {
cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier,
CPU_ONLINE, (void *)(long)cpu);
}
return 0;
}
开发者ID:ManiacTwister,项目名称:linux-hnd,代码行数:25,代码来源:cpufreq_stats.c
示例5: ltc3577_attach
static int ltc3577_attach( struct i2c_adapter *adap )
{
struct ltc3577_i2c_driver *driver = <c3577_driver; /* YUCK! However no other way to get it. */
int rc;
/* Now initialize the semaphore. */
init_MUTEX( <c3577_register_cache_lock );
/* Now initialize and register the client. */
i2c_set_clientdata( &driver->client, driver );
driver->client.adapter=adap;
rc=i2c_attach_client( &driver->client );
if( rc )
{
printk( KERN_ERR "LTC3577: Error registring i2C driver to device core. Aborting.\n" );
return -ENODEV;
}
down( <c3577_register_cache_lock );
/* Set PWM mode */
ltc3577_set_swmode( ltc3577_write, LTC3577_PWM );
if( rc < 0 )
{
printk( KERN_ERR "LTC3577: Error writing initial value to PMIC. Aborting.\n" );
i2c_detach_client( &driver->client );
up( <c3577_register_cache_lock );
return -ENODEV;
}
/* Register the usbmode statechange listener. This will inform us when to change the */
/* PMIC's settings. */
if( IO_HaveUsbBusPowered() )
{
rc=add_usb_state_change_listener( ltc3577_state_change_listener, driver );
if( rc != 0 )
{
printk( KERN_ERR "LTC3577: Can't register USBMODE change state listener. Aborting.\n" );
i2c_detach_client( &driver->client );
up( <c3577_register_cache_lock );
return -ENODEV;
}
}
atomic_set(&driver->suspended, 0);
ltc3577_i2c_commit( &driver->client, ltc3577_write, NULL, 0);
up( <c3577_register_cache_lock );
#if defined CONFIG_CPU_FREQ && (defined CONFIG_S3C24XX_DVS_CPUFREQ || defined S3C24XX_DFS_CPUFREQ)
/* Register the CPUFREQ entries. These will set the right voltage when the frequency */
/* changes. */
cpufreq_register_notifier( &driver->freq_transition, CPUFREQ_TRANSITION_NOTIFIER );
cpufreq_register_notifier( &driver->freq_policy, CPUFREQ_POLICY_NOTIFIER );
#endif
/* Done initializing. */
return 0;
}
开发者ID:kzlin129,项目名称:tt-gpl,代码行数:60,代码来源:ltc3577-pmic.c
示例6: cpufreq_stats_init
static int __init cpufreq_stats_init(void)
{
int ret;
unsigned int cpu;
spin_lock_init(&cpufreq_stats_lock);
ret = cpufreq_register_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER);
if (ret)
return ret;
register_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
for_each_online_cpu(cpu)
cpufreq_update_policy(cpu);
ret = cpufreq_register_notifier(¬ifier_trans_block,
CPUFREQ_TRANSITION_NOTIFIER);
if (ret) {
cpufreq_unregister_notifier(¬ifier_policy_block,
CPUFREQ_POLICY_NOTIFIER);
unregister_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
for_each_online_cpu(cpu)
cpufreq_stats_free_table(cpu);
return ret;
}
return 0;
}
开发者ID:Andiry,项目名称:pmfs,代码行数:28,代码来源:cpufreq_stats.c
示例7: pwm_cpufreq_notifier_register
static inline int pwm_cpufreq_notifier_register(struct pwm_device *p)
{
p->freq_transition.notifier_call = pwm_freq_transition_notifier_cb;
return cpufreq_register_notifier(&p->freq_transition,
CPUFREQ_TRANSITION_NOTIFIER);
}
开发者ID:faisalomar,项目名称:linux-3.2.0,代码行数:7,代码来源:pwm.c
示例8: cpu_boost_init
static int cpu_boost_init(void)
{
int cpu, ret;
struct cpu_sync *s;
cpufreq_register_notifier(&boost_adjust_nb, CPUFREQ_POLICY_NOTIFIER);
cpu_boost_wq = alloc_workqueue("cpuboost_wq", WQ_HIGHPRI, 0);
if (!cpu_boost_wq)
return -EFAULT;
INIT_WORK(&input_boost_work, do_input_boost);
for_each_possible_cpu(cpu) {
s = &per_cpu(sync_info, cpu);
s->cpu = cpu;
init_waitqueue_head(&s->sync_wq);
spin_lock_init(&s->lock);
INIT_DELAYED_WORK(&s->boost_rem, do_boost_rem);
INIT_DELAYED_WORK(&s->input_boost_rem, do_input_boost_rem);
s->thread = kthread_run(boost_mig_sync_thread, (void *)cpu,
"boost_sync/%d", cpu);
#if defined(CONFIG_ARCH_MSM8974) || defined(CONFIG_ARCH_MSM8974PRO)
kthread_bind(s->thread, cpu);
#endif
}
atomic_notifier_chain_register(&migration_notifier_head,
&boost_migration_nb);
ret = input_register_handler(&cpuboost_input_handler);
return 0;
}
开发者ID:davidmueller13,项目名称:kernel_lt03lte_aospv2_5.1.1,代码行数:32,代码来源:cpu-boost.c
示例9: cpu_boost_init
static int cpu_boost_init(void)
{
int cpu;
struct cpu_sync *s;
cpufreq_register_notifier(&boost_adjust_nb, CPUFREQ_POLICY_NOTIFIER);
boost_rem_wq = alloc_workqueue("cpuboost_rem_wq", WQ_HIGHPRI, 0);
if (!boost_rem_wq)
return -EFAULT;
for_each_possible_cpu(cpu) {
s = &per_cpu(sync_info, cpu);
s->cpu = cpu;
init_waitqueue_head(&s->sync_wq);
spin_lock_init(&s->lock);
INIT_DELAYED_WORK(&s->boost_rem, do_boost_rem);
s->thread = kthread_run(boost_mig_sync_thread, (void *)cpu,
"boost_sync/%d", cpu);
}
atomic_notifier_chain_register(&migration_notifier_head,
&boost_migration_nb);
return 0;
}
开发者ID:Jeongduckho,项目名称:E250_KITKAT,代码行数:25,代码来源:cpu-boost.c
示例10: osiris_dvs_probe
static int osiris_dvs_probe(struct platform_device *pdev)
{
int ret;
dev_info(&pdev->dev, "initialising\n");
ret = gpio_request(OSIRIS_GPIO_DVS, "osiris-dvs");
if (ret) {
dev_err(&pdev->dev, "cannot claim gpio\n");
goto err_nogpio;
}
/* start with dvs disabled */
gpio_direction_output(OSIRIS_GPIO_DVS, 1);
ret = cpufreq_register_notifier(&osiris_dvs_nb,
CPUFREQ_TRANSITION_NOTIFIER);
if (ret) {
dev_err(&pdev->dev, "failed to register with cpufreq\n");
goto err_nofreq;
}
osiris_dvs_tps_setdvs(true);
return 0;
err_nofreq:
gpio_free(OSIRIS_GPIO_DVS);
err_nogpio:
return ret;
}
开发者ID:01org,项目名称:KVMGT-kernel,代码行数:32,代码来源:mach-osiris-dvs.c
示例11: cpu_boost_init
static int cpu_boost_init(void)
{
int cpu, ret;
struct cpu_sync *s;
cpu_boost_wq = alloc_workqueue("cpuboost_wq", WQ_HIGHPRI, 0);
if (!cpu_boost_wq)
return -EFAULT;
INIT_WORK(&input_boost_work, do_input_boost);
for_each_possible_cpu(cpu) {
s = &per_cpu(sync_info, cpu);
s->cpu = cpu;
init_waitqueue_head(&s->sync_wq);
atomic_set(&s->being_woken, 0);
spin_lock_init(&s->lock);
INIT_DELAYED_WORK(&s->boost_rem, do_boost_rem);
INIT_DELAYED_WORK(&s->input_boost_rem, do_input_boost_rem);
s->thread = kthread_run(boost_mig_sync_thread, (void *)cpu,
"boost_sync/%d", cpu);
set_cpus_allowed(s->thread, *cpumask_of(cpu));
}
cpufreq_register_notifier(&boost_adjust_nb, CPUFREQ_POLICY_NOTIFIER);
atomic_notifier_chain_register(&migration_notifier_head,
&boost_migration_nb);
ret = input_register_handler(&cpuboost_input_handler);
return 0;
}
开发者ID:itsmerajit,项目名称:kernel_otus,代码行数:30,代码来源:cpu-boost.c
示例12: cs_init
static int cs_init(struct dbs_data *dbs_data, bool notify)
{
struct cs_dbs_tuners *tuners;
tuners = kzalloc(sizeof(*tuners), GFP_KERNEL);
if (!tuners) {
pr_err("%s: kzalloc failed\n", __func__);
return -ENOMEM;
}
tuners->up_threshold = DEF_FREQUENCY_UP_THRESHOLD;
tuners->down_threshold = DEF_FREQUENCY_DOWN_THRESHOLD;
tuners->sampling_down_factor = DEF_SAMPLING_DOWN_FACTOR;
tuners->ignore_nice_load = 0;
tuners->freq_step = DEF_FREQUENCY_STEP;
dbs_data->tuners = tuners;
dbs_data->min_sampling_rate = MIN_SAMPLING_RATE_RATIO *
jiffies_to_usecs(10);
if (notify)
cpufreq_register_notifier(&cs_cpufreq_notifier_block,
CPUFREQ_TRANSITION_NOTIFIER);
return 0;
}
开发者ID:DenisLug,项目名称:mptcp,代码行数:26,代码来源:cpufreq_conservative.c
示例13: cpu_boost_init
static int cpu_boost_init(void)
{
int cpu, ret;
struct cpu_sync *s;
cpufreq_register_notifier(&boost_adjust_nb, CPUFREQ_POLICY_NOTIFIER);
cpu_boost_wq = alloc_workqueue("cpuboost_wq", WQ_HIGHPRI, 0);
if (!cpu_boost_wq)
return -EFAULT;
INIT_WORK(&input_boost_work, do_input_boost);
for_each_possible_cpu(cpu) {
s = &per_cpu(sync_info, cpu);
s->cpu = cpu;
spin_lock_init(&s->lock);
INIT_DELAYED_WORK(&s->boost_rem, do_boost_rem);
INIT_DELAYED_WORK(&s->input_boost_rem, do_input_boost_rem);
}
atomic_notifier_chain_register(&migration_notifier_head,
&boost_migration_nb);
ret = smpboot_register_percpu_thread(&cpuboost_threads);
if (ret)
pr_err("Cannot register cpuboost threads.\n");
ret = input_register_handler(&cpuboost_input_handler);
if (ret)
pr_err("Cannot register cpuboost input handler.\n");
return ret;
}
开发者ID:jfdsmabalot,项目名称:kernel_sony_msm8974,代码行数:33,代码来源:cpu-boost.c
示例14: twd_cpufreq_init
static int twd_cpufreq_init(void)
{
if (!IS_ERR_OR_NULL(twd_clk))
return cpufreq_register_notifier(&twd_cpufreq_nb,
CPUFREQ_TRANSITION_NOTIFIER);
return 0;
}
开发者ID:Borkata,项目名称:adam-nv-3.1,代码行数:8,代码来源:smp_twd.c
示例15: acpi_thermal_cpufreq_init
void acpi_thermal_cpufreq_init(void)
{
int i;
i = cpufreq_register_notifier(&acpi_thermal_cpufreq_notifier_block,
CPUFREQ_POLICY_NOTIFIER);
if (!i)
acpi_thermal_cpufreq_is_init = 1;
}
开发者ID:0x000000FF,项目名称:Linux4Edison,代码行数:9,代码来源:processor_thermal.c
示例16: acpi_processor_ppc_init
void acpi_processor_ppc_init(void)
{
if (!cpufreq_register_notifier
(&acpi_ppc_notifier_block, CPUFREQ_POLICY_NOTIFIER))
acpi_processor_ppc_status |= PPC_REGISTERED;
else
printk(KERN_DEBUG
"Warning: Processor Platform Limit not supported.\n");
}
开发者ID:ivucica,项目名称:linux,代码行数:9,代码来源:processor_perflib.c
示例17: cpu_iboost_init
static int __init cpu_iboost_init(void)
{
struct boost_policy *b;
int cpu, ret;
boost_wq = alloc_workqueue("cpu_iboost_wq", WQ_HIGHPRI, 0);
if (!boost_wq) {
pr_err("Failed to allocate workqueue\n");
ret = -EFAULT;
goto err;
}
cpufreq_register_notifier(&cpu_do_boost_nb, CPUFREQ_POLICY_NOTIFIER);
INIT_DELAYED_WORK(&fb_boost_work, fb_boost_fn);
fb_register_client(&fb_boost_nb);
for_each_possible_cpu(cpu) {
b = &per_cpu(boost_info, cpu);
b->cpu = cpu;
INIT_DELAYED_WORK(&b->ib_restore_work, ib_restore_main);
init_waitqueue_head(&b->sync_wq);
atomic_set(&b->being_woken, 0);
spin_lock_init(&b->lock);
INIT_DELAYED_WORK(&b->mig_boost_rem, do_mig_boost_rem);
b->thread = kthread_run(boost_mig_sync_thread, (void *)cpu,
"boost_sync/%d", cpu);
set_cpus_allowed(b->thread, *cpumask_of(cpu));
}
atomic_notifier_chain_register(&migration_notifier_head, &boost_migration_nb);
INIT_WORK(&boost_work, ib_boost_main);
ret = input_register_handler(&cpu_iboost_input_handler);
if (ret) {
pr_err("Failed to register input handler, err: %d\n", ret);
goto err;
}
cpu_iboost_kobject = kobject_create_and_add("cpu_input_boost", kernel_kobj);
if (!cpu_iboost_kobject) {
pr_err("Failed to create kobject\n");
goto err;
}
ret = sysfs_create_group(cpu_iboost_kobject, &cpu_iboost_attr_group);
if (ret) {
pr_err("Failed to create sysfs interface\n");
kobject_put(cpu_iboost_kobject);
}
err:
return ret;
}
开发者ID:acuicultor,项目名称:Radioactive-kernel-caf,代码行数:55,代码来源:cpu_input_boost.c
示例18: msm_sleep_info_init
static int __init msm_sleep_info_init(void)
{
int err = 0;
int cpu;
struct sleep_data *sleep_info = NULL;
msm_stats_wq = create_workqueue("msm_stats_wq");
if (!msm_stats_wq) {
printk(KERN_ERR "Creation of msm_stats_wq failed!!\n");
return -EINVAL;
}
/* Register callback from idle for all cpus */
msm_idle_register_cb(idle_enter, idle_exit);
INIT_DELAYED_WORK_DEFERRABLE(&rq_info.rq_work, rq_work_fn);
INIT_DELAYED_WORK_DEFERRABLE(&rq_info.def_timer_work, def_work_fn);
init_rq_attribs();
for_each_possible_cpu(cpu) {
printk(KERN_INFO "msm_sleep_stats: Initializing sleep stats "
"for CPU[%d]\n", cpu);
sleep_info = &per_cpu(core_sleep_info, cpu);
sleep_info->cpu = cpu;
INIT_WORK(&sleep_info->work, notify_uspace_work_fn);
/* Initialize high resolution timer */
hrtimer_init(&sleep_info->timer, CLOCK_MONOTONIC,
HRTIMER_MODE_REL);
sleep_info->timer.function = timer_func;
/* Register for cpufreq policy changes */
sleep_info->nb.notifier_call = policy_change_notifier;
err = cpufreq_register_notifier(&sleep_info->nb,
CPUFREQ_POLICY_NOTIFIER);
if (err)
goto cleanup;
/* Create sysfs object */
err = add_sysfs_objects(sleep_info);
if (err)
goto cleanup;
continue;
cleanup:
printk(KERN_INFO "msm_sleep_stats: Failed to initialize sleep "
"stats for CPU[%d]\n", cpu);
sleep_info->cpu = -1;
cpufreq_unregister_notifier(&sleep_info->nb,
CPUFREQ_POLICY_NOTIFIER);
remove_sysfs_objects(sleep_info);
}
return 0;
}
开发者ID:b-man,项目名称:hp-kernel-tenderloin-ubuntu,代码行数:55,代码来源:msm_sleep_stats.c
示例19: cbe_cpufreq_pmi_init
static int __init cbe_cpufreq_pmi_init(void)
{
cbe_cpufreq_has_pmi = pmi_register_handler(&cbe_pmi_handler) == 0;
if (!cbe_cpufreq_has_pmi)
return -ENODEV;
cpufreq_register_notifier(&pmi_notifier_block, CPUFREQ_POLICY_NOTIFIER);
return 0;
}
开发者ID:007kumarraja,项目名称:rockchip-rk3188-mk908,代码行数:11,代码来源:cbe_cpufreq_pmi.c
示例20: stmp3xxx_dma_init
void __init stmp3xxx_dma_init(void)
{
stmp3xxx_clearl(BM_APBH_CTRL0_CLKGATE | BM_APBH_CTRL0_SFTRST,
REGS_APBH_BASE + HW_APBH_CTRL0);
stmp3xxx_clearl(BM_APBX_CTRL0_CLKGATE | BM_APBX_CTRL0_SFTRST,
REGS_APBX_BASE + HW_APBX_CTRL0);
#ifdef CONFIG_CPU_FREQ
cpufreq_register_notifier(&dma_cpufreq_nb.nb,
CPUFREQ_TRANSITION_NOTIFIER);
#endif /* CONFIG_CPU_FREQ */
}
开发者ID:0x0f,项目名称:android-tegra-nv-2.6.39,代码行数:11,代码来源:dma.c
注:本文中的cpufreq_register_notifier函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论