广播模式
来源:互联网 发布:贵金属k线图软件 编辑:程序博客网 时间:2024/04/29 18:35
/* * Periodic broadcast: * - invoke the broadcast handlers */static void tick_do_periodic_broadcast(void){raw_spin_lock(&tick_broadcast_lock);cpumask_and(to_cpumask(tmpmask), //确定受影响的CPU cpu_online_mask, tick_get_broadcast_mask());tick_do_broadcast(to_cpumask(tmpmask)); //raw_spin_unlock(&tick_broadcast_lock);}
tick_do_broadcast():
/* * Broadcast the event to the cpus, which are set in the mask (mangled). */static void tick_do_broadcast(struct cpumask *mask){int cpu = smp_processor_id();struct tick_device *td;/* * Check, if the current cpu is in the mask */if (cpumask_test_cpu(cpu, mask)) { //当前CPU是否处于广播的掩码中?cpumask_clear_cpu(cpu, mask); //从掩码中移除该CPUtd = &per_cpu(tick_cpu_device, cpu);td->evtdev->event_handler(td->evtdev); //对当前CPU调用event_handler}if (!cpumask_empty(mask)) { //掩码中是否还有更多的CPU/* * It might be necessary to actually check whether the devices * have different broadcast functions. For now, just use the * one of the first device. This works as long as we have this * misfeature only on x86 (lapic) */td = &per_cpu(tick_cpu_device, cpumask_first(mask));/**对与局部APIC来说,broadcast方法指向lapic_timer_interrupt。对所有与不同时钟设备相关联的CPU,该方法负责*发送处理器中断LOCAL_TIMER_VECTOR,该中断的中断向量由内核设置为调用apic_timer_interrupt。其结果就是,时钟*事件设备无法区分IPI和真正的中断,因而其效果与设备仍然处于工作状态是相同的。*/td->evtdev->broadcast(mask);}}
- 广播模式
- rabbitmq实战(广播模式)
- 广播(观察者模式)
- 自定义广播模式
- nrf51822-广播模式
- fanout广播模式
- Android 广播、EventBus、观察者模式
- 观察者模式(广播机制)
- SpringBoot 集成WebSocket广播模式
- 关于SNTP广播模式的疑惑
- 【Objective-c 学习笔记】广播模式
- 观察者模式 VS 发布/订阅(广播)
- iOS--界面传值 通知模式(广播)
- rocket mq 的广播模式示例
- 广播
- 广播
- 广播
- 广播
- python enumerate 用法
- ASP.NET中获取DridView点击的按钮后的索引
- 双重检查锁定及单例模式
- Python中Range和XRange的区别
- 项目实施之路
- 广播模式
- urb数据结构
- 第二个月感想-----2011年11月
- 映射 Map(基本数据类型)(参考张龙老师的)
- Handler-Socket Plugin for MySQL – SQL的功能、NoSQL的性能
- 坎坷WTL行(二)重绘CListViewCtrl之二
- 栈的应用-用栈实现八进制的顺序输出(c语言实现)
- 从企业的运行价值链说起——我眼中的测试驱动开发(TDD) 转
- mysql 恢复数据库----*.frm,*.myd,*.myi文件