Библиотека администратора ресурсов

Библиотека администратора ресурсов

Прежде чем лезть в глубины организации администраторов ресурсов, познакомимся сначала с библиотекой администратора ресурсов, разработанной QSSL. Отметим, что в действительности эта «библиотека» состоит из нескольких четко различимых частей:

• функции пула потоков (мы обсуждали их в главе «Процессы и потоки», в параграфе «Пулы потоков»);

• интерфейс диспетчеризации;

• функции администратора ресурсов;

• вспомогательные функции POSIX-библиотеки.

При том, что можно было бы, конечно, писать администраторы ресурсов «с нуля» (как это делалось в QNX4), эта овчинка часто не стоит такой выделки.

Просто для демонстрации практичности библиотечного подхода — вот код однопоточной версии администратора «/dev/null»:

/*

 * resmgr1.c

 *

 * /dev/null на основе библиотеки администратора ресурсов

*/

#include <stdio.h>

#include <stdlib.h>

#include <stddef.h>

#include <sys/iofunc.h>

#include <sys/dispatch.h>

int main(int argc, char **argv) {

 dispatch_t             *dpp;

 resmgr_attr_t          resmgr_attr;

 resmgr_context_t       *ctp;

 resmgr_connect_funcs_t connect_func;

 resmgr_io_funcs_t      io_func;

 iofunc_attr_t          attr;

 // Создать структуру диспетчеризации

 if ((dpp = dispatch_create()) == NULL) {

  perror("Ошибка dispatch_create ");

  exit(EXIT_FAILURE);

 }

 // Инициализировать структуры данных

 memset(&resmgr_attr, 0, sizeof(resmgr_attr));

 resmgr_attr.nparts_max = 1;

 resmgr_attr.msg_max_size = 2048;

 // Назначить вызовам обработчики по умолчанию

 iofunc_func_init(_RESMGR_CONNECT_NFUNCS, &connect_func,

  _RESMGR_IO_NFUNCS, &io_func);

 iofunc_attr_init(&attr, S_IFNAM | 0666, 0, 0);

 // Зарегистрировать префикс в пространстве имен путей

 if (resmgr_attach(dpp, &resmgr_attr,

  "/dev/mynull", _FTYPE_ANY,

  0, &connect_func, &io_func, &attr) == -1) {

  perror("Ошибка resmgr_attach ");

  exit(EXIT_FAILURE);

 }

 ctp = resmgr_context_alloc(dpp);

 // Ждать сообщений в вечном цикле

 while (1) (

  if ((ctp = resmgr_block(ctp)) == NULL) {

   perror("Ошибка resmgr_block ");

   exit(EXIT_FAILURE);

  }

  resmgr_handler(ctp);

 }

}

И все! Полнофункциональный администратор ресурса /dev/null реализуется всего несколькими вызовами функций!

Если бы пришлось писать аналогичный по функциональности администратор (то есть с поддержкой функций stat(), chown(), chmod(), и т.д.) «с нуля», то вам пришлось бы перелопатить сотни, если не тысячи строк Си-кода.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

(8.21) Утерян пароль администратора. Что делать? Доступ к компьютеру полный.

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

(8.21) Утерян пароль администратора. Что делать? Доступ к компьютеру полный. Удалите файлы %Windir%system32configsam*. Если W2k установлен на FAT/FAT32, то из Win9x или с дискеты, если на NTFS – придется установить параллельную копию системы или снять жесткий диск и поставить его на другую машину с


1.7. Что такое сервер? (или Курс Молодого Администратора)

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

1.7. Что такое сервер? (или Курс Молодого Администратора) Эта глава предназначена для начинающих системных администраторов, которые вообще с трудом представляют, что такое сервер и с чем его едят. Я принципиально не буду называть таких читателей «чайниками», поскольку сам


10.2.8. Библиотека DBM

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл


Смена расширения: как обойти ограничения администратора и прокси-сервера

Из книги Как найти и скачать в Интернете любые файлы автора Райтман М. А.

Смена расширения: как обойти ограничения администратора и прокси-сервера Надеюсь, некоторые советы в предыдущем разделе помогли вам получить доступ к тем веб-страницам, посещение которых ограничено или запрещено. Конечно, описанные методы работают не в 100 % случаев, и в


3.2.5. Запуск программы с правами администратора

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

3.2.5. Запуск программы с правами администратора Почему Windows XP была настоящим раем для вирусописателя? Иногда полчаса, проведенные в Интернете без антивируса и брандмауэра, заканчивались «поселением» на компьютере с десятка вирусов и шпионских программ. А все из-за того,


5.1.5. Запуск командной строки с правами администратора

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

5.1.5. Запуск командной строки с правами администратора Командную строку вам придется запускать очень редко, но ее запуск обычно требует прав администратора. Можно щелкнуть на ярлыке Командная строка правой кнопкой мыши и выбрать команду Запуск от имени администратора. А


21.6. Команды системного администратора

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

21.6. Команды системного администратора 21.6.1. Команды free и df— информация о системных ресурсах Команда free выводит информацию об использовании оперативной и виртуальной памяти, а df — об использовании дискового пространства. Из рис. 21.5 видно, что в системе установлено всего


Инструмент администратора

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

Инструмент администратора Инсталляционный комплект Firebird не содержит инструментов администратора с графическим интерфейсом. У него есть набор инструментов командной строки (исполняемые программы), которые расположены в каталоге /bin каталога инсталляции Firebird. Их


Графические инструменты администратора

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

Графические инструменты администратора Следующий список является лишь выборкой некоторых наиболее популярных элементов. Полный список см. на http://www.ibphoenix.com/main.nfs?a=ibphoenix &page=ibp_admin_tooIs. Database Workbench Database Workbench может соединяться с любым сервером Firebird на любой платформе. Он


Поиск администратора процессов

Из книги Linux и все, все, все... Статьи и колонки в LinuxFormat, 2006-2013 автора Федорчук Алексей Викторович

Поиск администратора процессов Теперь, когда мы знаем основные этапы поиска конкретного администратора ресурса, осталось раскрыть тайну поиска администратора процесса, с которого все начинается. На самом деле все очень просто. По определению, администратору процессов


Взгляд со стороны администратора ресурсов

Из книги автора

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


Написание администратора ресурсов

Из книги автора

Написание администратора ресурсов Теперь, когда мы знаем основы, — как выглядит мир глазами клиента, в каком цвете видит все администратор ресурсов, и что из себя представляют оба уровня библиотеки — пришло время сконцентрироваться на деталях.В этом разделе мы


Структура администратора ресурсов

Из книги автора

Структура администратора ресурсов Теперь, когда мы имеем представление о структурах данных, мы можем обсудить взаимодействие между компонентами, которые вам предстоит написать, чтобы ваш администратор ресурсов мог что-нибудь реально сделать.Мы рассмотрим:• Функцию


Блокирование в пределах администратора ресурсов

Из книги автора

Блокирование в пределах администратора ресурсов До настоящего момента мы избегали разговоров о возможности блокирования в пределах администратора ресурсов. Мы предполагали, что у нас есть функция-обработчик (например, io_read()), и что данные будут доступны немедленно. А


13.7. Получение ресурсов из библиотеки ресурсов

Из книги автора

13.7. Получение ресурсов из библиотеки ресурсов Постановка задачи Требуется получить фотографии или видео непосредственно из библиотеки фотографий, не прибегая к использованию каких-либо встроенных компонентов графического пользовательского


Настройка окружения администратора

Из книги автора

Настройка окружения администратора Таким образом, мы привели внешний вид рабочего стола в приемлемое состояние. Однако не следует этим ограничиваться: нам предстоят ещё некоторые действия, которые надо будет выполнить от имени администратора, а на его окружение