2013-05-06 69 views
0

我试图研究Linux内核和读取内核代码 但我无法理解它们用于页面结构的结构,如下所示: 我的意思是,为什么他们使用嵌套在其中嵌套在联合 结构体联合(该代码被简化...)为什么要使用这些奇怪的嵌套结构

struct page { 
    unsigned long flags; 
    struct address_space *mapping; 

    struct { 
     union { 
      pgoff_t index; 
      void *freelist; 
     }; 

     union { 
      unsigned counters; 

      struct { 

       union { 

        atomic_t _mapcount; 
        struct { 
         unsigned inuse:16; 
         unsigned objects:15; 
         unsigned frozen:1; 
        }; 
       }; 
       atomic_t _count; 
      }; 
     }; 
    }; 
} 

回答

0

它是用来使清晰度到代码。如果会员分组,会更容易阅读和理解。

由于您没有在任何其他数据结构中使用“子结构”,所以它们是嵌套的。否则,他们将被宣布为独立成员,如下所示:

struct list_based{ 
       pgoff_t index; 
       void *freelist; 
    }; 

    struct page { 
     unsigned long flags; 
     struct address_space *mapping; 
     struct list_based lpage; 
    }; 

    struct sector { 
     unsigned long sub sect; 
     struct list_based lsect; 
    }; 
相关问题