Разработка ядра Linux - [168]

Шрифт
Интервал

.

Рис. 17.2. Содержимое части каталога >/sys

Корневой каталог файловой системы sysfs содержит семь подкаталогов: >block, >bus, >class, >devices, >firmware, >module и >power. В каталоге >block содержатся каталоги для каждого зарегистрированного в системе устройства блочного ввода-вывода.

Каждый из каталогов в свою очередь содержит подкаталоги, соответствующие разделам блочного устройства. Каталог >bus позволяет просматривать информацию о системных шинах. В каталоге >class представлена информация о системных устройствах, которая организована в соответствии с высокоуровневыми функциями этих устройств. Каталог devices содержит информацию о топологии устройств в системе. Она отображается непосредственно на иерархию структур устройств ядра. Каталог >firmware содержит специфичное для данной системы дерево низкоуровневых подсистем, таких как ACPI, EDD, EFT и т.д. В каталоге >power содержатся данные по управлению электропитанием всех устройств системы.

Наиболее важным является каталог >devices, который экспортирует модель устройств ядра во внешний мир. Структура каталога соответствует топологии устройств в системе. Большинство информации, которая содержится в других каталогах, — это просто другое представление данных каталога devices. Например, в каталоге >/sys/class/net/ информация представлена в соответствии с высокоуровневым представлением зарегистрированных сетевых устройств. В этом каталоге может содержаться подкаталог >eth0, который содержит символьную ссылку device на соответствующее устройство каталога >devices.

Посмотрите на содержимое каталога >/sys той системы Linux, к которой вы имеете доступ. Такое представление системных устройств является очень четким и ясным. Оно показывает взаимосвязь между высокоуровневым представлением информации в каталоге >class, низкоуровневым представлением в каталоге devices и драйверами устройств — в каталоге >bus. Такое представление взаимосвязи между устройствами очень информативно. Оно становится еще более ценным, если осознать, что все эти данные свободно доступны и описывают все то, что происходит внутри ядра[89].

Добавление и удаление объектов на файловой системе sysfs

Инициализированные объекты >kobject автоматически не экспортируются через файловую систему sysfs. Для того чтобы сделать объект видимым через sysfs, необходимо использовать функцию >kobject_add().

>int kobject_add(struct kobject *kobj);

Положение объекта на файловой системе sysfs зависит от его положения в объектной иерархии. Если установлен указатель >parent объекта, то объект будет отображен внутри каталога, соответствующего объекту, на который указывает указатель parent. Если указатель >parent не установлен, то объект будет отображен в каталоге, соответствующем значению переменной >kset->kobj. Если для некоторого объекта не установлены ни значение поля parent, ни значение поля >kset, то считается, что данный объект не имеет родительского и будет отображаться в корневом каталоге файловой системы >sysfs. Такое поведение практически всегда соответствует тому, что нужно. Поэтому одно из полей parent или >kset (или оба) должно быть установлено правильным образом перед вызовом функции >kobject_add(). Имя каталога, который представляет объект >kobject в файловой системе sysfs, будет определяться значением поля >kobj->name.

Вместо того чтобы последовательно вызывать функции >kobject_init() и >kobject_add(), можно вызвать функцию >kobject_register().

>int kobject_register(struct kobject *kobj);

Удаление объекта из файловой системы sysfs выполняется с помощью функции >kobject_del().

>void kobject_del(struct kobject *kobj);

Функция >kobject_unregister() сочетает в себе выполнение функций >kobject_del() и >kobject_put().

>void kobject_unregister(struct kobject* kobj);

Все эти четыре функции определены в файле >lib/kobject.c и объявлены в файле >.

Добавление файлов на файловой системе sysfs

Объекты >kobject отображаются на каталоги, и такое отображение выполняется естественным образом. А как насчет создания файлов? Файловая система sysfs — это не что иное, как дерево каталогов без файлов.

Атрибуты, используемые по умолчанию

Набор файлов, которые создаются в каталоге по умолчанию, определяется с помощью поля >ktype объектов >kobject и множеств >kset. Следовательно, все объекты >kobject одного типа имеют один и тот же набор файлов в каталогах, которые этим объектам соответствуют. Структура >kobject_type содержит поле >default_attrs, которое представляет собой массив структур >attribute. Атрибуты отображают данные ядра на файлы в файловой системе sysfs.

Структура >attributes определена в файле >.

>/* структура attribute - атрибуты позволяют отобразить данные ядра

> на файлы файловой системы sysfs */

>struct attribute {

> char          *name;  /* имя атрибута */

> struct module *owner; /* модуль, если есть, которому

>                          принадлежат данные */

> mode_t        mode;   /* права доступа к файлу */

>};

Поле >name содержит имя атрибута. Такое же имя будет иметь и соответствующий файл на файловой системе sysfs. Поле >owner — это указатель на структуру >module, которая представляет загружаемый модуль, содержащий соответствующие данные. Если такого модуля не существует, то значение поля равно


Рекомендуем почитать
Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ.


Погружение в Salix

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Ubuntu Linux: базовый курс

Если вы читаете эту книгу, значит вы подумываете о том, как бы поставить и попробовать Ubuntu. Наверняка, вы не захотите сразу отказываться от Windows и поставите Ubuntu, как вторую ОС (операционную систему).Возможно, вы как и я долго метались от дистрибутива к дистрибутиву и решали, какой же установить. Уверяю вас, вы сделали правильный выбор. Данная книга проведёт небольшую, но базовую экскурсию на тему установки и настройки.Я уверен, что вы найдёте эту книгу интересной для себя. Если у вас возникают какие-либо вопросы, я могу осветить их в новой версии этой книги.


Документация NetAMS

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Just for fun. Рассказ нечаянного революционера

Все началось с того, что студенту захотелось написать собственную программу эмуляции терминала. Потом он принялся развивать и дополнять ее и вдруг заметил, что у него получилась операционная система. Линус назвал ее Linux и поместил в Интернете, призвав желающих вносить в систему изменения. И программисты всех стран, объединившись, стали над ней трудиться.«Just for fun» – смесь автобиографии с рассуждениями о технологиях и путях их развития. Для читателей, неискушенных в программировании, Торвальдс разворачивает увлекательную историю своей жизни.


Перспективы свободного программного обеспечения в сфере государственного управления и бюджетном секторе

n1`Глава 2 из отчета Фонда Новая экономика Министерству экономического развития и торговли по теме «Анализ результатов и разработка предложений по созданию механизмов поддержки (в том числе за счет средств федерального бюджета) проектов по использованию ИКТ в экономике, социальной сфере, государственном управлении на региональном и муниципальном уровнях власти». Работа выполнена в рамках ФЦП «Электронная Россия». Дается очерк перспектив модели коммерческого программного обеспечения, известной как свободное программное обеспечение (СПО), в части удовлетворения потребности государственных органов и организаций в компьютерных программах, в сравнении с альтернативной (несвободной) моделью.