diff options
Diffstat (limited to 'ru_RU.KOI8-R/articles/geom-class/article.xml')
-rw-r--r-- | ru_RU.KOI8-R/articles/geom-class/article.xml | 111 |
1 files changed, 51 insertions, 60 deletions
diff --git a/ru_RU.KOI8-R/articles/geom-class/article.xml b/ru_RU.KOI8-R/articles/geom-class/article.xml index 44a5b96d59..025cd5cb1a 100644 --- a/ru_RU.KOI8-R/articles/geom-class/article.xml +++ b/ru_RU.KOI8-R/articles/geom-class/article.xml @@ -1,33 +1,26 @@ <?xml version="1.0" encoding="koi8-r"?> -<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN" - "../../../share/xml/freebsd45.dtd"> - +<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN" + "../../../share/xml/freebsd50.dtd"> <!-- The FreeBSD Russian Documentation Project $FreeBSD$ $FreeBSDru$ Original revision: r41109 --> - <!-- Перевод: Тарас Коренко --> +<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru"> + -<article lang="ru"> - <title>Создание класса GEOM</title> - - <articleinfo> + <info><title>Создание класса GEOM</title> <authorgroup> - <author> - <firstname>Ivan</firstname> - <surname>Voras</surname> - <affiliation> + <author><personname><firstname>Ivan</firstname><surname>Voras</surname></personname><affiliation> <address><email>ivoras@FreeBSD.org</email> </address> - </affiliation> - </author> + </affiliation></author> </authorgroup> - <legalnotice id="trademarks" role="trademarks"> + <legalnotice xml:id="trademarks" role="trademarks"> &tm-attrib.freebsd; &tm-attrib.intel; &tm-attrib.general; @@ -44,12 +37,12 @@ на Си в контексте пространства пользовательских процессов (userland).</para> </abstract> - </articleinfo> + </info> - <sect1 id="intro"> + <sect1 xml:id="intro"> <title>Вступление</title> - <sect2 id="intro-docs"> + <sect2 xml:id="intro-docs"> <title>Документация</title> <para>Документация по программированию для ядра скудная, это одна из @@ -61,28 +54,28 @@ <itemizedlist> <listitem> - <para><ulink url="&url.books.developers-handbook;/index.html"> - Руководство FreeBSD для разработчиков</ulink> — часть + <para><link xlink:href="&url.books.developers-handbook;/index.html"> + Руководство FreeBSD для разработчиков</link> — часть Проекта Документации FreeBSD, ничего специфичного о программировании ядра в нем нет, зато есть немного общей полезной информации.</para> </listitem> <listitem> - <para><ulink url="&url.books.arch-handbook;/index.html"> - Руководство по Архитектуре FreeBSD</ulink> — также + <para><link xlink:href="&url.books.arch-handbook;/index.html"> + Руководство по Архитектуре FreeBSD</link> — также является частью Проекта Документации FreeBSD, содержит описания некоторых низкоуровневых средств и процедур. Уделите внимание разделу номер 13 — - <ulink url="&url.books.arch-handbook;/driverbasics.html"> - Написание драйверов устройств для FreeBSD</ulink>.</para> + <link xlink:href="&url.books.arch-handbook;/driverbasics.html"> + Написание драйверов устройств для FreeBSD</link>.</para> </listitem> <listitem> <para>Несколько интересных статей об устройстве ядра можно найти на сайте - <ulink url="http://www.freebsddiary.com">FreeBSD - Diary</ulink>.</para> + <link xlink:href="http://www.freebsddiary.com">FreeBSD + Diary</link>.</para> </listitem> <listitem> @@ -91,9 +84,8 @@ </listitem> <listitem> - <para>Страница справочника &man.geom.4;, а также <ulink - url="http://phk.freebsd.dk/pubs/">слайды Пола-Хеннинга Кампа - </ulink> — общее представление о подсистеме GEOM.</para> + <para>Страница справочника &man.geom.4;, а также <link xlink:href="http://phk.freebsd.dk/pubs/">слайды Пола-Хеннинга Кампа + </link> — общее представление о подсистеме GEOM.</para> </listitem> <listitem> @@ -114,7 +106,7 @@ </sect2> </sect1> - <sect1 id="prelim"> + <sect1 xml:id="prelim"> <title>Подготовка</title> <para>Для того, чтоб заниматься разработками для ядра, желательно @@ -133,12 +125,12 @@ <para>Но так как далеко не у каждого есть два или более компьютеров под рукой, есть пара способов подготовить иную <quote>живую</quote> систему для разработки кода для ядра. Один из них — это - разработка в <ulink url="http://www.vmware.com/">VMWare</ulink> - или <ulink url="http://www.qemu.org/">QEmu</ulink> виртуальной машине + разработка в <link xlink:href="http://www.vmware.com/">VMWare</link> + или <link xlink:href="http://www.qemu.org/">QEmu</link> виртуальной машине (это лучшее из доступного, после, конечно-же, выделенного для тестов компьютера).</para> - <sect2 id="prelim-system"> + <sect2 xml:id="prelim-system"> <title>Настройка системы для разработки</title> <para>Прежде всего необходимо иметь в ядре поддержку @@ -218,7 +210,7 @@ dumpdir="/usr/core" </programlisting> перемещать дамп ядра при следующей загрузке.</para> <para>Сохранение дампа ядра — процесс медленный, и, если - у вашего компьютера много оперативной памяти (>256M) и если + у вашего компьютера много оперативной памяти (>256M) и если паники случаются часто, то ожидание сохранения дампов может начать раздражать (вспомним, что над дампом происходит две операции: сохранение в своп-файл и перемещение на файловую систему). @@ -244,7 +236,7 @@ dumpdir="/usr/core" </programlisting> второй компьютер в качестве NFS-сервера.</para> </sect2> - <sect2 id="prelim-starting"> + <sect2 xml:id="prelim-starting"> <title>Начало проекта</title> <para>Для написания нового класса GEOM необходимо создать поддиректорию @@ -253,7 +245,7 @@ dumpdir="/usr/core" </programlisting> <filename>/usr/src</filename>.</para> </sect2> - <sect2 id="prelim-makefile"> + <sect2 xml:id="prelim-makefile"> <title>Makefile</title> <para>Правилом хорошего тона является создание @@ -280,10 +272,10 @@ KMOD=geom_journal </sect2> </sect1> - <sect1 id="kernelprog"> + <sect1 xml:id="kernelprog"> <title>Программирование в ядре FreeBSD</title> - <sect2 id="kernelprog-memalloc"> + <sect2 xml:id="kernelprog-memalloc"> <title>Выделение памяти</title> <para>Прочитайте &man.malloc.9; — выделение памяти лишь @@ -311,7 +303,7 @@ KMOD=geom_journal одинакового размера (например, динамические массивы структур).</para> </sect2> - <sect2 id="kernelprog-lists"> + <sect2 xml:id="kernelprog-lists"> <title>Очереди и списки</title> <para>Ознакомьтесь с &man.queue.3; @@ -329,10 +321,10 @@ KMOD=geom_journal &man.tree.3; и &man.hashinit.9;.</para> </sect2> - <sect2 id="kernelprog-bios"> + <sect2 xml:id="kernelprog-bios"> <title>BIOs</title> - <para>Структура <structname>bio</structname> используется для всех + <para>Структура <varname remap="structname">bio</varname> используется для всех операций ввода/вывода, касающихся GEOM. Она содержит информацию о том, какое устройство ('поставщик geom') должно ответить на запрос, тип запроса, смещение, длину и указатель на буфер, @@ -341,7 +333,7 @@ KMOD=geom_journal <!-- , которые могут помочь осуществить various hacks-->. </para> - <para>Важным моментом является то, что <structname>bio</structname> + <para>Важным моментом является то, что <varname remap="structname">bio</varname> обрабатываются асинхронно. Это значит, что во многих частях кода нет аналога к &man.read.2; и &man.write.2; функциям из пространства пользовательских процессов, которые не возвращают управление пока @@ -362,10 +354,10 @@ KMOD=geom_journal </sect2> </sect1> - <sect1 id="geom"> + <sect1 xml:id="geom"> <title>Программирование в системе GEOM</title> - <sect2 id="geom-ggate"> + <sect2 xml:id="geom-ggate"> <title>Ggate</title> <para>Если максимальная производительность не требуется, @@ -375,7 +367,7 @@ KMOD=geom_journal невозможность простого переноса кода в ядро.</para> </sect2> - <sect2 id="geom-class"> + <sect2 xml:id="geom-class"> <title>Класс GEOM</title> <para>Класс GEOM выполняет преобразования данных. Эти преобразования @@ -421,13 +413,13 @@ KMOD=geom_journal в экземпляр geom.</para> <para>Поле <function>.geom</function> в структуре - <structname>g_class</structname> — это список (LIST) экземпляров + <varname remap="structname">g_class</varname> — это список (LIST) экземпляров geom, реализованных из класса.</para> <para>Эти функции вызываются из g_event потока ядра.</para> </sect2> - <sect2 id="geom-softc"> + <sect2 xml:id="geom-softc"> <title>Softc</title> <para><quote>softc</quote> — это устаревший термин @@ -460,11 +452,11 @@ KMOD=geom_journal </listitem> </itemizedlist> - <para>Структура <structname>softc</structname> содержит состояние + <para>Структура <varname remap="structname">softc</varname> содержит состояние экземпляра geom. У каждого экземпляра есть свой softc.</para> </sect2> - <sect2 id="geom-metadata"> + <sect2 xml:id="geom-metadata"> <title>Метаданные</title> <para>Формат метаданных в той или иной мере зависит от конкретного @@ -491,7 +483,7 @@ KMOD=geom_journal подобно описанному и поддерживается библиотеками.)</para> </sect2> - <sect2 id="geom-creating"> + <sect2 xml:id="geom-creating"> <title>Маркирование/создание экземпляра geom</title> <para>Последовательность событий следующая:</para> @@ -504,7 +496,7 @@ KMOD=geom_journal <listitem> <para>программа решает каким классом geom ей придется управлять и ищет библиотеку - <filename>geom_<replaceable>CLASSNAME</replaceable>.so</filename> + <filename>geom_CLASSNAME.so</filename> (которая обычно находится в <filename>/lib/geom</filename>).</para> </listitem> @@ -544,13 +536,13 @@ KMOD=geom_journal подобно описанному и поддерживается библиотеками.)</para> </sect2> - <sect2 id="geom-command"> + <sect2 xml:id="geom-command"> <title>Структура команд geom</title> <para>Вспомогательная библиотека <filename>geom_CLASSNAME.so</filename> - экспортирует структуру <structname>class_commands</structname>, + экспортирует структуру <varname remap="structname">class_commands</varname>, которая является массивом элементов - <structname>struct g_command</structname>. Эти команды одинакового + <varname remap="structname">struct g_command</varname>. Эти команды одинакового формата и выглядят следующим образом:</para> <programlisting> команда [-опции] имя_geom [другие]</programlisting> @@ -585,7 +577,7 @@ KMOD=geom_journal <para>Некоторые операции, к примеру маркирование метаданными и разрушение метаданных могут быть выполнены из пространства пользовательских процессов. Для этого, структура - <structname>g_command</structname> содержит поле + <varname remap="structname">g_command</varname> содержит поле <varname>gc_func</varname>, которое может быть установлено на функцию (в том-же <filename>.so</filename>), которая будет вызвана для обработки команды. В случае, когда <varname>gc_func</varname> @@ -593,7 +585,7 @@ KMOD=geom_journal <function>.ctlreq</function> класса GEOM.</para> </sect2> - <sect2 id="geom-geoms"> + <sect2 xml:id="geom-geoms"> <title>Экземпляры geom</title> <para>У экземпляров классов GEOM есть внутренние данные, которые @@ -640,7 +632,7 @@ KMOD=geom_journal приходит запрос BIO.</para> </sect2> - <sect2 id="geom-threads"> + <sect2 xml:id="geom-threads"> <title>Потоки выполнения системы geom</title> <para>Системой GEOM в ядре ОС создаются и используются три @@ -726,7 +718,7 @@ KMOD=geom_journal </itemizedlist> <para>За информацией о том, как данные передаются в структуре - <structname>bio</structname> между экземплярами geom, + <varname remap="structname">bio</varname> между экземплярами geom, смотрите &man.g.bio.9; (обратите внимание на использование полей <varname>bio_parent</varname> и <varname>bio_children</varname>). </para> @@ -774,7 +766,7 @@ KMOD=geom_journal дополнительных ядерных потоков.</para> </sect2> - <sect2 id="geom-kernelthreads"> + <sect2 xml:id="geom-kernelthreads"> <title>Ядерные потоки выполнения, предназначенные для использования в коде geom</title> @@ -819,4 +811,3 @@ KMOD=geom_journal </sect2> </sect1> </article> - |