发布时间:2014-10-12 17:37:39
1、软中断由内核线程ksoftirqd处理,下面说一下它的创建过程。start_kernel()创建init线程,init()调用do_pre_smp_initcalls()->spawn_ksoftirqd(),spawn_ksoftirqd()分两次调用cpu_callback(),分别使用参数CPU_UP_PREPARE和CPU_ONLINE。使用CPU_UP_PREPARE调用cpu_callback()时,创建了ksoftirqd线程,并把task_struct指针存于per_cpu变量per_cpu(ksoftirqd, hotcpu)中;使用CPU_ONLINE调......【阅读全文】
发布时间:2014-10-12 11:22:18
有些时候我们很难知道问题出在哪里,特别是类的析构,以及一些函数(调用这个函数的地方很多并且很频繁,不确定调用这个函数的堆栈)的调用,当我们去查找相应功能的代码问题时,如果简单的通过断点不好查找,就可以使用这个办法。所以我们使用gcc的编译特性使用__builtin_return_address(level)打印出一个函数的堆栈.........【阅读全文】