typedef struct { unsigned long pgd; } pgd_t;
为什么不直接定义成unsigned long pgd_t;

解决方案 »

  1.   

    主要是为了使用C的类型检查,pgd,pud,pmd,pte本质上都是同类型的unsigned long,这几个字一不小心就会写混淆了。先区分一下,内核中这个用法是先用typedef定义一个类型,即*_t都是类型,用*_t定义的变量,不会有_t,比如
    pgd_t pgd;
      

  2.   

    typedef struct { unsigned long pgd; } pgd_t; 
    属于C语言高级用法,主要是为了在项目中做到语义清晰等用途。