2016-12-29 23 views
0

与ftrace类似,我有一个函数,它打印armv7板上引导内核时调用的所有函数的地址。在功能调用setup_arch功能之前地址被正确打印,但在此之后,随机地址被打印。我认为它是自旋锁的问题,因为映射时这些地址涉及的功能如_raw_spin_lock_irqsaveadd_preempt_count。它可能不是螺旋锁问题。 关于如何解决它的任何建议?随机地址在armv7引导内核时无限期地打印

+0

spin_lock函数在'start_kernel'后广泛调用似乎是合理的。你为什么说这些是随机地址? – levengli

+0

@levengli我有我自己的函数,就像我在'start_kernel'中添加的用于测试目的的问题所说的那样。它在'setup_arch'之前正确地打印内核函数的地址,但是在打印出指向锁的随机地址之后。有什么办法可以禁用自旋锁吗? – arceus

回答

0

根据您的评论,问题是如何禁用spin_locks以阐明日志文件。

虽然在多核系统上禁用锁定会产生影响,但可能会导致系统出错达到崩溃的程度 - 可以这样做。

include/linux/spinlock.h表明可以通过编译内核来禁用spin_locks,其中CONFIG_SMPCONFIG_DEBUG_SPINLOCK未定义。

+0

我认为这可能是由于一些试图获得自旋锁的中断。有什么方法可以检查在运行我的功能时是否启用了中断。 – arceus