aboutsummaryrefslogtreecommitdiff
path: root/ru_RU.KOI8-R/articles/geom-class/article.xml
diff options
context:
space:
mode:
Diffstat (limited to 'ru_RU.KOI8-R/articles/geom-class/article.xml')
-rw-r--r--ru_RU.KOI8-R/articles/geom-class/article.xml111
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> &mdash; часть
+ <para><link xlink:href="&url.books.developers-handbook;/index.html">
+ Руководство FreeBSD для разработчиков</link> &mdash; часть
Проекта Документации FreeBSD, ничего специфичного
о программировании ядра в нем нет, зато есть немного общей
полезной информации.</para>
</listitem>
<listitem>
- <para><ulink url="&url.books.arch-handbook;/index.html">
- Руководство по Архитектуре FreeBSD</ulink> &mdash; также
+ <para><link xlink:href="&url.books.arch-handbook;/index.html">
+ Руководство по Архитектуре FreeBSD</link> &mdash; также
является частью Проекта Документации FreeBSD, содержит описания
некоторых низкоуровневых средств и процедур. Уделите внимание
разделу номер 13 &mdash;
- <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> &mdash; общее представление о подсистеме GEOM.</para>
+ <para>Страница справочника &man.geom.4;, а также <link xlink:href="http://phk.freebsd.dk/pubs/">слайды Пола-Хеннинга Кампа
+ </link> &mdash; общее представление о подсистеме 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>
систему для разработки кода для ядра. Один из них &mdash; это
- разработка в <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>Сохранение дампа ядра &mdash; процесс медленный, и, если
- у вашего компьютера много оперативной памяти (>256M) и если
+ у вашего компьютера много оперативной памяти (&gt;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; &mdash; выделение памяти лишь
@@ -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> &mdash; это список (LIST) экземпляров
+ <varname remap="structname">g_class</varname> &mdash; это список (LIST) экземпляров
geom, реализованных из класса.</para>
<para>Эти функции вызываются из g_event потока ядра.</para>
</sect2>
- <sect2 id="geom-softc">
+ <sect2 xml:id="geom-softc">
<title>Softc</title>
<para><quote>softc</quote> &mdash; это устаревший термин
@@ -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>
-