- 论坛徽章:
- 0
|
最近项目中有要用到一些clocksource clockevent的东西,目的是能动态的改变clocksource,clockevent,例如:- void __init sp804_clocksource_init(void __iomem *base)
- {
- struct clocksource *cs = &clocksource_sp804;
- clksrc_base = base;
- /* setup timer 0 as free-running clocksource */
- writel(0, clksrc_base + TIMER_CTRL);
- writel(0xffffffff, clksrc_base + TIMER_LOAD);
- writel(0xffffffff, clksrc_base + TIMER_VALUE);
- writel(TIMER_CTRL_32BIT | TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC,
- clksrc_base + TIMER_CTRL);
- clocksource_register_khz(cs, TIMER_FREQ_KHZ);
- }
复制代码- void __init sp804_clockevents_init(void __iomem *base, unsigned int timer_irq)
- {
- struct clock_event_device *evt = &sp804_clockevent;
- clkevt_base = base;
- evt->irq = timer_irq;
- evt->mult = div_sc(TIMER_FREQ_KHZ, NSEC_PER_MSEC, evt->shift);
- evt->max_delta_ns = clockevent_delta2ns(0xffffffff, evt);
- evt->min_delta_ns = clockevent_delta2ns(0xf, evt);
- setup_irq(timer_irq, &sp804_timer_irq);
- clockevents_register_device(evt);
- }
复制代码 这个是arm sp804 timer初始化的code,假如是我想根据不同的TIMER_FREQ_KHZ值而重新调整clocksource和clockevent的设定,请问应该如何?
我在kernel/time/clocksource.c中找到了clocksource_unregister,但是在clockevent.c中却没有unregister函数?
最好哪位大侠能给出Pseudo code, 或者是能说说正确的注销流程是什么,谢谢谢谢 |
|