2013-05-06 3 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; 
    }; 
Смежные вопросы