当前位置: 技术问答>linux和unix
内核中这种写法是什么意思
来源: 互联网 发布时间:2016-12-23
本文导语: #define pgprot_val(x) ((x).pgprot) 莫非是在模拟面向对象,x表示传入的对象,pgprot为属性? 请高手解答 | 去内核找段代码看一下就明白了。以X86为例, typedef unsigned long pgprotval_t; typedef s...
#define pgprot_val(x) ((x).pgprot)
莫非是在模拟面向对象,x表示传入的对象,pgprot为属性?
请高手解答
莫非是在模拟面向对象,x表示传入的对象,pgprot为属性?
请高手解答
|
去内核找段代码看一下就明白了。以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);
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);
|
抛出这种接口是为了便于封装和掩饰,如果以后优化或者变换机制,对使用者和其他api来说基本没有影响,内核只需要把这个宏稍作改动即可。
|
x使用的时候必然传的是struct