内核中这种写法是什么意思

littleubuntu 2011-08-15 05:00:31
#define pgprot_val(x) ((x).pgprot)


莫非是在模拟面向对象,x表示传入的对象,pgprot为属性?
请高手解答
...全文
199 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
不断修行 2011-08-20
  • 打赏
  • 举报
回复
路过学习了.
jernymy 2011-08-20
  • 打赏
  • 举报
回复
mark一下,是挺绕的,内核代码木有怎么看,同学习
翔云123456 2011-08-20
  • 打赏
  • 举报
回复
结构体也可以这样用
wyfwx 2011-08-18
  • 打赏
  • 举报
回复
x使用的时候必然传的是struct
  • 打赏
  • 举报
回复
我太讨厌这种宏了。到处都是。看着郁闷!
念茜 2011-08-15
  • 打赏
  • 举报
回复
抛出这种接口是为了便于封装和掩饰,如果以后优化或者变换机制,对使用者和其他api来说基本没有影响,内核只需要把这个宏稍作改动即可。
cqbamboo 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gaosifuti 的回复:]

据说是为了将来扩展方便……
[/Quote]
good idea!
“据说”来自哪里呢?是不是某个神秘的注释?
gaosifuti 2011-08-15
  • 打赏
  • 举报
回复
据说是为了将来扩展方便……
cqbamboo 2011-08-15
  • 打赏
  • 举报
回复
去内核找段代码看一下就明白了。以X86为例,

typedef unsigned long pgprotval_t;
typedef struct pgprot { pgprotval_t pgprot; } pgprot_t;
#define pgprot_val(x) ((x).pgprot)

arch/x86/mm/dump_pagetables.c
72 static void printk_prot(struct seq_file *m, pgprot_t prot, int level)
73 {
74 pgprotval_t pr = pgprot_val(prot);
qq120848369 2011-08-15
  • 打赏
  • 举报
回复
结构体也可以用.,不是么= =。

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧