本文整理汇总了C++中register_cpu_notifier函数的典型用法代码示例。如果您正苦于以下问题:C++ register_cpu_notifier函数的具体用法?C++ register_cpu_notifier怎么用?C++ register_cpu_notifier使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了register_cpu_notifier函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: store_cc_enabled
static ssize_t __ref store_cc_enabled(struct kobject *kobj,
struct kobj_attribute *attr, const char *buf, size_t count)
{
int ret = 0;
int val = 0;
mutex_lock(&core_control_mutex);
ret = kstrtoint(buf, 10, &val);
if (ret) {
pr_err("%s: Invalid input %s\n", KBUILD_MODNAME, buf);
goto done_store_cc;
}
if (core_control_enabled == !!val)
goto done_store_cc;
core_control_enabled = !!val;
if (core_control_enabled) {
pr_info("%s: Core control enabled\n", KBUILD_MODNAME);
register_cpu_notifier(&msm_thermal_cpu_notifier);
update_offline_cores(cpus_offlined);
} else {
pr_info("%s: Core control disabled\n", KBUILD_MODNAME);
unregister_cpu_notifier(&msm_thermal_cpu_notifier);
}
done_store_cc:
mutex_unlock(&core_control_mutex);
return count;
}
开发者ID:m4n1c22,项目名称:mptcp_nexus5,代码行数:30,代码来源:msm_thermal.c
示例2: msm_thermal_init
int __devinit msm_thermal_init(struct msm_thermal_data *pdata)
{
int ret = 0;
BUG_ON(!pdata);
tsens_get_max_sensor_num(&max_tsens_num);
memcpy(&msm_thermal_info, pdata, sizeof(struct msm_thermal_data));
if (create_sensor_id_map())
return -EINVAL;
if (check_sensor_id(msm_thermal_info.sensor_id))
return -EINVAL;
enabled = 1;
INIT_DELAYED_WORK(&check_temp_work, check_temp);
schedule_delayed_work(&check_temp_work, 0);
if (num_possible_cpus() > 1) {
mutex_lock(&core_control_mutex);
core_control_enabled = 1;
register_cpu_notifier(&msm_thermal_cpu_notifier);
update_offline_cores(cpus_offlined);
mutex_unlock(&core_control_mutex);
}
return ret;
}
开发者ID:m4n1c22,项目名称:mptcp_nexus5,代码行数:27,代码来源:msm_thermal.c
示例3: kvm_init_srcu
int kvm_init_srcu(void)
{
struct task_struct *p;
int cpu;
int err;
get_online_cpus();
for_each_online_cpu(cpu) {
p = kthread_create(kvm_rcu_sync_thread, (void *)(long)cpu,
"kvmsrcusync/%d", cpu);
if (IS_ERR(p))
goto error_out;
kthread_bind(p, cpu);
sched_setscheduler(p, SCHED_FIFO, &sync_thread_param);
per_cpu(sync_thread, cpu) = p;
wake_up_process(p);
}
#ifdef CONFIG_HOTPLUG_CPU
register_cpu_notifier(&cpu_nfb);
#endif /* CONFIG_HOTPLUG_CPU */
put_online_cpus();
return 0;
error_out:
put_online_cpus();
printk(KERN_ERR "kvm: kvmsrcsync for %d failed\n", cpu);
err = PTR_ERR(p);
kvm_exit_srcu();
return err;
}
开发者ID:AjayMashi,项目名称:nitro-kvm,代码行数:32,代码来源:srcu.c
示例4: topology_init
static int __init topology_init(void)
{
int cpu;
register_nodes();
register_cpu_notifier(&sysfs_cpu_nb);
for_each_possible_cpu(cpu) {
struct cpu *c = &per_cpu(cpu_devices, cpu);
/*
* For now, we just see if the system supports making
* the RTAS calls for CPU hotplug. But, there may be a
* more comprehensive way to do this for an individual
* CPU. For instance, the boot cpu might never be valid
* for hotplugging.
*/
if (ppc_md.cpu_die)
c->hotpluggable = 1;
if (cpu_online(cpu) || c->hotpluggable) {
register_cpu(c, cpu);
device_create_file(&c->dev, &dev_attr_physical_id);
}
if (cpu_online(cpu))
register_cpu_online(cpu);
}
#ifdef CONFIG_PPC64
sysfs_create_dscr_default();
#endif /* CONFIG_PPC64 */
return 0;
}
开发者ID:MrJwiz,项目名称:UBER-M,代码行数:35,代码来源:sysfs.c
示例5: arch_hw_breakpoint_init
/*
* One-time initialisation.
*/
static int __init arch_hw_breakpoint_init(void)
{
core_num_brps = get_num_brps();
core_num_wrps = get_num_wrps();
pr_info("found %d breakpoint and %d watchpoint registers.\n",
core_num_brps, core_num_wrps);
/*
* Reset the breakpoint resources. We assume that a halting
* debugger will leave the world in a nice state for us.
*/
smp_call_function(reset_ctrl_regs, NULL, 1);
reset_ctrl_regs(NULL);
/* Register debug fault handlers. */
hook_debug_fault_code(DBG_ESR_EVT_HWBP, breakpoint_handler, SIGTRAP,
TRAP_HWBKPT, "hw-breakpoint handler");
hook_debug_fault_code(DBG_ESR_EVT_HWWP, watchpoint_handler, SIGTRAP,
TRAP_HWBKPT, "hw-watchpoint handler");
/* Register hotplug notifier. */
register_cpu_notifier(&hw_breakpoint_reset_nb);
return 0;
}
开发者ID:47fortyseven,项目名称:custom_kernel_hermes,代码行数:29,代码来源:hw_breakpoint.c
示例6: irq_work_init_cpu_notifier
static __init int irq_work_init_cpu_notifier(void)
{
cpu_notify.notifier_call = irq_work_cpu_notify;
cpu_notify.priority = 0;
register_cpu_notifier(&cpu_notify);
return 0;
}
开发者ID:MikeForeskin,项目名称:Vindicator-S6-MM,代码行数:7,代码来源:irq_work.c
示例7: store_cc_enabled
static ssize_t __ref store_cc_enabled(struct kobject *kobj,
struct kobj_attribute *attr, const char *buf, size_t count)
{
int ret = 0;
int val = 0;
ret = kstrtoint(buf, 10, &val);
if (ret) {
pr_err("%s: Invalid input %s\n", KBUILD_MODNAME, buf);
goto done_store_cc;
}
if (core_control_enabled == !!val)
goto done_store_cc;
core_control_enabled = !!val;
if (core_control_enabled) {
pr_info("%s: Core control enabled\n", KBUILD_MODNAME);
register_cpu_notifier(&msm_thermal_cpu_notifier);
if (hotplug_task)
complete(&hotplug_notify_complete);
else
pr_err("%s: Hotplug task is not initialized\n",
KBUILD_MODNAME);
} else {
pr_info("%s: Core control disabled\n", KBUILD_MODNAME);
unregister_cpu_notifier(&msm_thermal_cpu_notifier);
}
done_store_cc:
return count;
}
开发者ID:fhasovic,项目名称:LG-G2-D802-Kernel,代码行数:32,代码来源:msm_thermal.c
示例8: metag_generic_timer_init
int __init metag_generic_timer_init(void)
{
/*
* On Meta 2 SoCs, the actual frequency of the timer is based on the
* Meta core clock speed divided by an integer, so it is only
* approximately 1MHz. Calculating the real frequency here drastically
* reduces clock skew on these SoCs.
*/
#ifdef CONFIG_METAG_META21
hwtimer_freq = get_coreclock() / (metag_in32(EXPAND_TIMER_DIV) + 1);
#endif
pr_info("Timer frequency: %u Hz\n", hwtimer_freq);
clocksource_register_hz(&clocksource_metag, hwtimer_freq);
setup_irq(tbisig_map(TBID_SIGNUM_TRT), &metag_timer_irq);
/* Configure timer on boot CPU */
arch_timer_setup(smp_processor_id());
/* Hook cpu boot to configure other CPU's timers */
register_cpu_notifier(&arch_timer_cpu_nb);
return 0;
}
开发者ID:020gzh,项目名称:linux,代码行数:25,代码来源:metag_generic.c
示例9: pseries_processor_idle_init
static int __init pseries_processor_idle_init(void)
{
int retval;
retval = pseries_idle_probe();
if (retval)
return retval;
pseries_cpuidle_driver_init();
retval = cpuidle_register_driver(&pseries_idle_driver);
if (retval) {
printk(KERN_DEBUG "Registration of pseries driver failed.\n");
return retval;
}
retval = pseries_idle_devices_init();
if (retval) {
pseries_idle_devices_uninit();
cpuidle_unregister_driver(&pseries_idle_driver);
return retval;
}
register_cpu_notifier(&setup_hotplug_notifier);
printk(KERN_DEBUG "pseries_idle_driver registered\n");
return 0;
}
开发者ID:AllenDou,项目名称:linux,代码行数:27,代码来源:processor_idle.c
示例10: setup_cpu_watcher
static int __cpuinit setup_cpu_watcher(struct notifier_block *notifier,
unsigned long event, void *data)
{
unsigned int i;
static struct xenbus_watch __cpuinitdata cpu_watch = {
.node = "cpu",
.callback = handle_vcpu_hotplug_event,
.flags = XBWF_new_thread };
(void)register_xenbus_watch(&cpu_watch);
if (!is_initial_xendomain()) {
for_each_possible_cpu(i)
vcpu_hotplug(i);
printk(KERN_INFO "Brought up %ld CPUs\n",
(long)num_online_cpus());
}
return NOTIFY_DONE;
}
static int __init setup_vcpu_hotplug_event(void)
{
static struct notifier_block hotplug_cpu = {
.notifier_call = smpboot_cpu_notify };
static struct notifier_block __cpuinitdata xsn_cpu = {
.notifier_call = setup_cpu_watcher };
if (!is_running_on_xen())
return -ENODEV;
register_cpu_notifier(&hotplug_cpu);
register_xenstore_notifier(&xsn_cpu);
return 0;
}
arch_initcall(setup_vcpu_hotplug_event);
int __ref smp_suspend(void)
{
unsigned int cpu;
int err;
for_each_online_cpu(cpu) {
if (cpu == 0)
continue;
err = cpu_down(cpu);
if (err) {
printk(KERN_CRIT "Failed to take all CPUs "
"down: %d.\n", err);
for_each_possible_cpu(cpu)
vcpu_hotplug(cpu);
return err;
}
}
return 0;
}
开发者ID:AsadRaza,项目名称:OCTEON-Linux,代码行数:59,代码来源:cpu_hotplug.c
示例11: spawn_ksoftirqd
__init int spawn_ksoftirqd(void)
{
void *cpu = (void *)(long)smp_processor_id();
cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu);
cpu_callback(&cpu_nfb, CPU_ONLINE, cpu);
register_cpu_notifier(&cpu_nfb);
return 0;
}
开发者ID:NKSG,项目名称:INTER_MANET_NS3,代码行数:8,代码来源:softirq.c
示例12: tasklet_subsys_init
void __init tasklet_subsys_init(void)
{
void *hcpu = (void *)(long)smp_processor_id();
cpu_callback(&cpu_nfb, CPU_UP_PREPARE, hcpu);
register_cpu_notifier(&cpu_nfb);
open_softirq(TASKLET_SOFTIRQ, tasklet_softirq_action);
tasklets_initialised = 1;
}
开发者ID:fdario,项目名称:xen,代码行数:8,代码来源:tasklet.c
示例13: test_init
static int __init test_init(void)
{
//enable_clock(12, "Vfifo");
register_cpu_notifier(&cpu_nfb);
start_kicker();
return 0;
}
开发者ID:agrloki,项目名称:android_kernel_ousheng_V9,代码行数:8,代码来源:wdt_test.c
示例14: spawn_ksoftirqd
static __init int spawn_ksoftirqd(void)
{
register_cpu_notifier(&cpu_nfb);
BUG_ON(smpboot_register_percpu_thread(&softirq_threads));
return 0;
}
开发者ID:adyjl,项目名称:DORIMANX_LG_STOCK_LP_KERNEL,代码行数:8,代码来源:softirq.c
示例15: hrtimers_init
void __init hrtimers_init(void)
{
hrtimer_cpu_notify(&hrtimers_nb, (unsigned long)CPU_UP_PREPARE,
(void *)(long)smp_processor_id());
register_cpu_notifier(&hrtimers_nb);
#ifdef CONFIG_HIGH_RES_TIMERS
open_softirq(HRTIMER_SOFTIRQ, run_hrtimer_softirq);
#endif
}
开发者ID:RolanDroid,项目名称:lge_MonsterKernel-lproj,代码行数:9,代码来源:hrtimer.c
示例16: kvm_timer_hyp_init
int kvm_timer_hyp_init(void)
{
struct device_node *np;
unsigned int ppi;
int err;
timecounter = arch_timer_get_timecounter();
if (!timecounter)
return -ENODEV;
np = of_find_matching_node(NULL, arch_timer_of_match);
if (!np) {
kvm_err("kvm_arch_timer: can't find DT node\n");
return -ENODEV;
}
ppi = irq_of_parse_and_map(np, 2);
if (!ppi) {
kvm_err("kvm_arch_timer: no virtual timer interrupt\n");
err = -EINVAL;
goto out;
}
err = request_percpu_irq(ppi, kvm_arch_timer_handler,
"kvm guest timer", kvm_get_running_vcpus());
if (err) {
kvm_err("kvm_arch_timer: can't request interrupt %d (%d)\n",
ppi, err);
goto out;
}
timer_irq.irq = ppi;
err = register_cpu_notifier(&kvm_timer_cpu_nb);
if (err) {
kvm_err("Cannot register timer CPU notifier\n");
goto out_free;
}
wqueue = create_singlethread_workqueue("kvm_arch_timer");
if (!wqueue) {
err = -ENOMEM;
goto out_free;
}
kvm_info("%s IRQ%d\n", np->name, ppi);
on_each_cpu(kvm_timer_init_interrupt, NULL, 1);
goto out;
out_free:
free_percpu_irq(ppi, kvm_get_running_vcpus());
out:
of_node_put(np);
return err;
}
开发者ID:0x000000FF,项目名称:Linux4Edison,代码行数:55,代码来源:arch_timer.c
示例17: page_writeback_init
/*
* Called early on to tune the page writeback dirty limits.
*
* We used to scale dirty pages according to how total memory
* related to pages that could be allocated for buffers (by
* comparing nr_free_buffer_pages() to vm_total_pages.
*
* However, that was when we used "dirty_ratio" to scale with
* all memory, and we don't do that any more. "dirty_ratio"
* is now applied to total non-HIGHPAGE memory (by subtracting
* totalhigh_pages from vm_total_pages), and as such we can't
* get into the old insane situation any more where we had
* large amounts of dirty pages compared to a small amount of
* non-HIGHMEM memory.
*
* But we might still want to scale the dirty_ratio by how
* much memory the box has..
*/
void __init page_writeback_init(void)
{
int shift;
writeback_set_ratelimit();
register_cpu_notifier(&ratelimit_nb);
shift = calc_period_shift();
prop_descriptor_init(&vm_completions, shift);
prop_descriptor_init(&vm_dirties, shift);
}
开发者ID:printusrzero,项目名称:hwp6s-kernel,代码行数:29,代码来源:page-writeback.c
示例18: nmi_setup
static int nmi_setup(void)
{
int err = 0;
int cpu;
if (!allocate_msrs())
return -ENOMEM;
/* We need to serialize save and setup for HT because the subset
* of msrs are distinct for save and setup operations
*/
/* Assume saved/restored counters are the same on all CPUs */
err = model->fill_in_addresses(&per_cpu(cpu_msrs, 0));
if (err)
goto fail;
for_each_possible_cpu(cpu) {
if (!cpu)
continue;
memcpy(per_cpu(cpu_msrs, cpu).counters,
per_cpu(cpu_msrs, 0).counters,
sizeof(struct op_msr) * model->num_counters);
memcpy(per_cpu(cpu_msrs, cpu).controls,
per_cpu(cpu_msrs, 0).controls,
sizeof(struct op_msr) * model->num_controls);
mux_clone(cpu);
}
nmi_enabled = 0;
ctr_running = 0;
/* make variables visible to the nmi handler: */
smp_mb();
err = register_nmi_handler(NMI_LOCAL, profile_exceptions_notify,
0, "oprofile");
if (err)
goto fail;
get_online_cpus();
register_cpu_notifier(&oprofile_cpu_nb);
nmi_enabled = 1;
/* make nmi_enabled visible to the nmi handler: */
smp_mb();
on_each_cpu(nmi_cpu_setup, NULL, 1);
put_online_cpus();
return 0;
fail:
free_msrs();
return err;
}
开发者ID:garyvan,项目名称:openwrt-1.6,代码行数:54,代码来源:nmi_int.c
示例19: pftracer_init
static int __init pftracer_init(void)
{
int i, err;
#if defined(ETR_DRAM)
/* DRAM */
void *buff;
dma_addr_t dma_handle;
buff = dma_alloc_coherent(NULL, ETR_BUFF_SIZE, &dma_handle, GFP_KERNEL);
if (!buff) {
return -ENOMEM;
}
etb_driver_data.etr_virt = (u32)buff;
etb_driver_data.etr_phys = dma_handle;
etb_driver_data.etr_len = ETR_BUFF_SIZE;
etb_driver_data.use_etr = 1;
etb_driver_data.etb_regs = IOMEM(DEBUGTOP_BASE + 0x13000);
#elif defined(ETR_SRAM)
/* SRAM */
etb_driver_data.etr_virt = (u32)ETR_SRAM_VIRT_BASE;
etb_driver_data.etr_phys = (dma_addr_t)ETR_SRAM_PHYS_BASE;
etb_driver_data.etr_len = ETR_BUFF_SIZE;
etb_driver_data.use_etr = 1;
etb_driver_data.etb_regs = IOMEM(DEBUGTOP_BASE + 0x13000);
#else
/* ETB */
etb_driver_data.use_etr = 0;
etb_driver_data.etb_regs = IOMEM(DEBUGTOP_BASE + 0x11000);
#endif
for (i = 0; i < num_possible_cpus(); i++) {
per_cpu(trace_pwr_down, i) = 0;
etm_driver_data[i].pwr_down = &(per_cpu(trace_pwr_down, i));
}
for (i = 0; i < num_possible_cpus(); i++) {
err = platform_device_register(&(etm_device[i]));
if (err) {
pr_err("Fail to register etm_device %d",i);
return err;
}
}
err = platform_device_register(&etb_device);
if (err) {
pr_err("Fail to register etb_device");
return err;
}
register_cpu_notifier(&pftracer_notifier);
return 0;
}
开发者ID:SiddheshK15,项目名称:j608_fly_4511-master,代码行数:54,代码来源:pftracer.c
示例20: dummy_timer_register
static int __init dummy_timer_register(void)
{
int err = register_cpu_notifier(&dummy_timer_cpu_nb);
if (err)
return err;
/* We won't get a call on the boot CPU, so register immediately */
if (num_possible_cpus() > 1)
dummy_timer_setup();
return 0;
}
开发者ID:03199618,项目名称:linux,代码行数:12,代码来源:dummy_timer.c
注:本文中的register_cpu_notifier函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论