用户名: 密码: 忘记密码? 注册
收藏此问题 发表新评论

current宏的使用

C/C++ code
int main(void) { struct task_struct *task; struct list_head *list; list_for_each(list, &current->children) { task = list_entry(list, struct task_struct, sibling); } return 0; }

Linux内核设计与实现上有上面这段程序,用于获得一个进程的所有子进程。
然后这段程序并没有加头文件,从其它资料得知current宏被包涵在<asm/current.h>中,但是编译时报错:

fatal error: asm/current.h: No such file or directory

我用的Linux是Linux ubuntu 2.6.35,在/usr/include/asm/文件夹下确实没发现此头文件,而在2.6.22.6源码中却有此头文件。此问题困扰我很久,从网上也没有查到能解决此问题的方法。请朋友们帮忙,谢谢!
昵称: bryce_xiao  时间: 2011-02-28 21:29:36
内核代码跟应用层的代码是有分别的。current应该是属于内核的东西,因此不能用于应用层的程序中。
——一个明显的区别,它们所包含的头文件是不同的。/usr/include下面的头文件是我们常见程序的头文件,而内核有自己的头文件。
昵称: subfate  时间: 2011-02-28 22:13:32
十个河南九个骗总部设在驻马店剩下一个是教练
九个河南八个偷指挥机关在郑州剩下一个在练手
八个河南七个抢贼子窝窝在洛阳剩下一个在张望
昵称: 呀咩爹  时间: 2019-01-15 16:43:36
发表评论
昵称:
内容:
验证: