当前位置: 技术问答>linux和unix
current宏
来源: 互联网 发布时间:2016-12-13
本文导语: 本帖最后由 proghua 于 2011-07-14 10:49:50 编辑 在x86的中 #ifndef _ASM_X86_CURRENT_H #define _ASM_X86_CURRENT_H #include #include #ifndef __ASSEMBLY__ struct task_struct; DECLARE_PER_CPU(struct task_struct *, current_task); static __always_inline struct tas...
#ifndef _ASM_X86_CURRENT_H
#define _ASM_X86_CURRENT_H
#include
#include
#ifndef __ASSEMBLY__
struct task_struct;
DECLARE_PER_CPU(struct task_struct *, current_task);
static __always_inline struct task_struct *get_current(void)
{
return percpu_read_stable(current_task);
}
#define current get_current()
#endif /* __ASSEMBLY__ */
#endif /* _ASM_X86_CURRENT_H */
percpu_read_stable(current_task)这句看不懂,从这句往后追踪,也看不懂,求解释
为什么不是通过current_thread_info得到
|
猜测一下,供参考:
DECLARE_PER_CPU(struct task_struct *, current_task);
----这个宏应该是声明了一个struct task_struct *类型的结构体,名字叫current_task,这个结构体应该是指示任务属性的
static __always_inline struct task_struct *get_current(void)
{
return percpu_read_stable(current_task);
}
----这个函数需要返回一个struct task_struct *类型的结构体指针,即获取现在的任务属性,于是调用percpu_read_stable函数,这个函数的参数是刚才声明的current_task,在percpu_read_stable函数内部应该会用各种参数填充刚才声明的current_task,然后把这个current_task返回回来
DECLARE_PER_CPU(struct task_struct *, current_task);
----这个宏应该是声明了一个struct task_struct *类型的结构体,名字叫current_task,这个结构体应该是指示任务属性的
static __always_inline struct task_struct *get_current(void)
{
return percpu_read_stable(current_task);
}
----这个函数需要返回一个struct task_struct *类型的结构体指针,即获取现在的任务属性,于是调用percpu_read_stable函数,这个函数的参数是刚才声明的current_task,在percpu_read_stable函数内部应该会用各种参数填充刚才声明的current_task,然后把这个current_task返回回来
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。