我正在尝试在get_next_timer_interrupt()代码周围捕获一个导致PC间歇性崩溃的错误,有时在run_timer_softirq()
我发现一个驱动程序可能通常使用传递给它的相同静态参数调用init_timer()。 (timer_list)
这会引起问题吗?
init_timer究竟做了什么,是否有一个反向破坏它的函数?
由于
答案 0 :(得分:2)
多次调用init_timer()
不应该导致任何问题。最终调用的代码is:
621 static void do_init_timer(struct timer_list *timer, unsigned int flags,
622 const char *name, struct lock_class_key *key)
623 {
624 struct tvec_base *base = __raw_get_cpu_var(tvec_bases);
625
626 timer->entry.next = NULL;
627 timer->base = (void *)((unsigned long)base | flags);
628 timer->slack = -1;
629 #ifdef CONFIG_TIMER_STATS
630 timer->start_site = NULL;
631 timer->start_pid = -1;
632 memset(timer->start_comm, 0, TASK_COMM_LEN);
633 #endif
634 lockdep_init_map(&timer->lockdep_map, name, key, 0);
635 }
由一些调用它的宏调用它。开始here以跟进流程。