- 论坛徽章:
- 0
|
本帖最后由 hubaohai 于 2014-07-10 14:53 编辑
目标:完成一个调试系统,输出调试信息需要被过滤。
实现方式:由于代码都在软中断环境中执行,参与运行的数据被封装在一个独立结构中(以下简称为pkt)
pkt 的内存地址是动态申请的,因此我将pkt的地址保存在一个per_cpu的二级指针ppkt中。
之后从ppkt 中获取pkt的内容进行比较一系列过程。
伪代码如下:
声明
DEFINE_PER_CPU(A** , ppkt)
保存:
__get_cpu_var(ppkt) = &pkt;
但是运行过程中出现
(*__get_cpu_var(ppkt)) != pkt 的情况,这属于解引用失败吧;
出现频率:必现
能请知情认识指点一二不?
另外我看一下Linux中获取当前运行的进程函数为:
static inline struct thread_info *current_thread_info(void)
{
struct thread_info *ti;
__asm__("and.d $sp,%0; ":"=r" (ti) : "0" (~8191UL));
return ti;
}
我的目标就是完成这样一个类似的功能,能随时获取全局变量
|
|