Главная » Ядро Linux » Путаница со структурами

0

Те  несколько  структур, которые только   что  были  описаны,  приводят к  путанице  не  потому,  что  их  много   (только четыре)   или  они  сложные (все  они  достаточно просты), а потому  что  они  сильно друг с другом  переплетаются. При  использовании объектов  kobjec t  достаточно сложно  рассказать  об  одной   структуре,  не  упоминая другие.   Тем  не  менее,  на  основании  рассмотренных особенностей  этих  структур можно построить прочное понимание их взаимоотношений.

Самым  важным является  объект   kobject ,  который представляется с  помощью структуры  struc t    kobject .   Структура  kobjec t   используется  для   представления наиболее  общих   объектных свойств  структур  данных   ядра, таких  как  счетчик ссылок, взаимоотношения родитель-порожденный и имя  объекта. С помощью структуры kobjec t  эти  свойства можно  обеспечить одинаковым  для  всех  стандартным способом.  Сами  по  себе  структуры kobjec t  не  очень  полезны, они  обычно встраиваются в  другие  структуры данных.

С  каждым  объектом  kobjec t  связан  один   определенный тип  данных—   ktype , который  представляется с  помощью  структуры  struc t    kobj_type .  На  экземпляр такой   структуры указывает поле  ktyp e  каждого объекта   kobject .  С  помощью типов ktyp e  определяются некоторые  общие   свойства объектов: поведение при  удалении объекта, поведение, связанное с файловой системой sysfs,  а также  атрибуты объекта.

Объект ы   kobjec t   группируются  в  множества,  которы е   называются  kset . Множества  kse t     представляются с  помощью  структур  данных   struc t    kset .  Эти множества предназначены  для  двух целей. Во-первых,  они  позволяют использовать встроенный  в  них  объект   kobjec t  в  качестве  базового  класса   для  группы   других объектов  kobject .  Во-вторых,  они  позволяют объединять вместе  несколько связанных  между   собой   объектов  kobject .  На  файловой  системе  sysfs  объекты  kobjec t представляются отдельными каталогами файловой системы. Связанные  между  собой каталоги, например все  подкаталоги одного  каталога,  могут  быть  включены в одно множество  kset .

Подсистемы  соответствуют большим  участкам ядра  и  являются  набором  множеств   kset .  Подсистемы  представляются  с  помощью  структур   struc t    subsystem . Все  каталоги,  которые  находятся в  корне  файловой  системы sysfs,   соответствуют подсистемам ядра.

На  рис.  17.1  показаны взаимоотношения между  этими структурами данных.

Подсистема                      Подсистема

kset          kobj

kobj                            kobj

kobj

kobj

kset             kobj

kobj                             kobj

Рис. 17.1. Взаимоотношения между объектами kobject, множествами

kset  и подсистемами

Источник: Лав,  Роберт. Разработка ядра  Linux, 2-е  издание. : Пер.  с англ.  — М.  : ООО  «И.Д.  Вильяме» 2006. — 448 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии