当前位置: 技术问答>linux和unix
linux 的又一处宏定义问题
来源: 互联网 发布时间:2017-03-07
本文导语: 大家好,在 linux 代码中有如下一处定义: #define ptep_clear_flush_young(__vma, __address, __ptep) ({ int __young; __young = ptep_test_and_clear_young(__vma, __address, __ptep); if (__young) flush_tlb_page(__vma, __address); ...
大家好,在 linux 代码中有如下一处定义:
#define ptep_clear_flush_young(__vma, __address, __ptep)
({
int __young;
__young = ptep_test_and_clear_young(__vma, __address, __ptep);
if (__young)
flush_tlb_page(__vma, __address);
__young; //不解,这里这样写起什么作用???
})
如上所示,不理解那里的写法是干什么用的。__young不是变量吗,怎么能直接写到这呢?而且发现 Pgtable.h 代码中有很多类似这样的写法,不解。哪位知道能指点一下,谢谢!
#define ptep_clear_flush_young(__vma, __address, __ptep)
({
int __young;
__young = ptep_test_and_clear_young(__vma, __address, __ptep);
if (__young)
flush_tlb_page(__vma, __address);
__young; //不解,这里这样写起什么作用???
})
如上所示,不理解那里的写法是干什么用的。__young不是变量吗,怎么能直接写到这呢?而且发现 Pgtable.h 代码中有很多类似这样的写法,不解。哪位知道能指点一下,谢谢!
|
zengming@linux-008:~/test/test> cat main.cpp
#include
using namespace std;
int main()
{
cout