Множини об’єктів kse t

Безлічі kse t являють собою колекції обєктів kobject Безліч kse t працює як базовий контейнерний клас для обєктів, наприклад, все блокові пристрої. Безлічі kse t дуже схожі на типи ktype, і виникає питання: Для чого потрібні два різних узагальнення” Безліч kse t обєднує декілька обєктів kobject, а типи ktype визначають загальні властивості, які повязані з обєктами kobjec t одного типу Існує можливість обєднати обєкти одного типу ktype в різні безлічі kset

Поле kse t обєкта kobjec t вказує на повязане з даним обєктом безліч kset Безліч обєктів kse t представляється за допомогою структури kset, яка визначена у файлі таким чином

struct kset {

struct subsystem         *subsys struct kobj_type         *ktype struct list_head         list struct kobject           kobj

struct kset_hotplug_ops   *hotplug_ops

}

Покажчик ktype вказує на структуру ktype, яка визначає тип всіх обєктів даного безлічі, поле lis t список всіх обєктів kobjec t даної множини, поле kobj – обєкт kobject, який представляє базовий клас для всіх обєктів даного безлічі, а поле hotplug_op s вказує на структуру, яка визначає поведінку обєктів kobjec t при гарячому підключенні пристроїв, повязаних з даними безліччю

Нарешті, поле sybsys вказує на структуру struc t subsystem, яка повязана з даними безліччю kset

Підсистеми

Підсистеми використовуються для представлення високорівневих концепцій ядра і є колекцією одного або декількох множин kset Безлічі kse t містять обєкти kobject, підсистеми – безлічі kset , Але звязок між множинами в підсистемі значно слабша, ніж звязок між обєктами kobjec t в множині Безлічі kse t однієї підсистеми можуть мати тільки найбільш загальні обєднуючі чинники

Незважаючи на їх важливу роль, підсистеми представляються за допомогою дуже простої структури даних – struc t subsystem

struct subsystem {

struct kset              ksot

struct rw_semaphore       rwsem

}

Структура subsystem містить тільки одну безліч kset, проте кілька множин kse t можуть вказувати на загальну структуру subsystem за допомогою

поля subsys Такі односпрямовані взаємини означають, що немає можливості визначити всі множестпа підсистеми, тільки маючи її структуру subsystem

Поле kset, яке міститься в структурі subsystem, – це безліч kse t підсистеми, яке використовується за умовчанням, щоб зафіксувати положення цієї підсистеми в ієрархії обєктів

Поле rwsem структури subsyste m – це семафор читання-запису (див главу 9, Засоби синхронізації в ядрі), який використовується для захисту підсистеми та її множин kse t від конкурентного доступу Всі безлічі kse t повинні належати небудь підсистемі, оскільки вони використовують семафор підсистеми для захисту своїх даних від конкурентного доступу

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

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*