Source string Read only

(itstool) path: sect1/title
12/120
Context English State
_ translator-credits
Writing a GEOM Class

<email>ivoras@FreeBSD.org</email>
<personname> <firstname>Ivan</firstname> <surname>Voras</surname> </personname> <affiliation> <_:address-1/> </affiliation>
FreeBSD is a registered trademark of the FreeBSD Foundation.
Intel, Celeron, Centrino, Core, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the <quote>™</quote> or the <quote>®</quote> symbol.
$FreeBSD: head/en_US.ISO8859-1/articles/geom-class/article.xml 54291 2020-06-23 13:48:26Z emaste $
This text documents some starting points in developing GEOM classes, and kernel modules in general. It is assumed that the reader is familiar with C userland programming.
Introduction
Documentation
Documentation on kernel programming is scarce — it is one of few areas where there is nearly nothing in the way of friendly tutorials, and the phrase <quote>use the source!</quote> really holds true. However, there are some bits and pieces (some of them seriously outdated) floating around that should be studied before beginning to code:
The <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/developers-handbook/index.html">FreeBSD Developer's Handbook</link> — part of the documentation project, it does not contain anything specific to kernel programming, but rather some general useful information.
The <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/arch-handbook/index.html">FreeBSD Architecture Handbook</link> — also from the documentation project, contains descriptions of several low-level facilities and procedures. The most important chapter is 13, <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/arch-handbook/driverbasics.html">Writing FreeBSD device drivers</link>.
The Blueprints section of <link xlink:href="http://www.freebsddiary.org">FreeBSD Diary</link> web site — contains several interesting articles on kernel facilities.
The man pages in section 9 — for important documentation on kernel functions.
The <citerefentry><refentrytitle>geom</refentrytitle><manvolnum>4</manvolnum></citerefentry> man page and <link xlink:href="http://phk.freebsd.dk/pubs/">PHK's GEOM slides</link> — for general introduction of the GEOM subsystem.
Man pages <citerefentry><refentrytitle>g_bio</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_event</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_data</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_geom</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_provider</refentrytitle><manvolnum>9</manvolnum></citerefentry> <citerefentry><refentrytitle>g_consumer</refentrytitle><manvolnum>9</manvolnum></citerefentry>, <citerefentry><refentrytitle>g_access</refentrytitle><manvolnum>9</manvolnum></citerefentry> &amp; others linked from those, for documentation on specific functionalities.
The <citerefentry><refentrytitle>style</refentrytitle><manvolnum>9</manvolnum></citerefentry> man page — for documentation on the coding-style conventions which must be followed for any code which is to be committed to the FreeBSD tree.
Preliminaries
The best way to do kernel development is to have (at least) two separate computers. One of these would contain the development environment and sources, and the other would be used to test the newly written code by network-booting and network-mounting filesystems from the first one. This way if the new code contains bugs and crashes the machine, it will not mess up the sources (and other <quote>live</quote> data). The second system does not even require a proper display. Instead, it could be connected with a serial cable or KVM to the first one.
But, since not everybody has two or more computers handy, there are a few things that can be done to prepare an otherwise <quote>live</quote> system for developing kernel code. This setup is also applicable for developing in a <link xlink:href="http://www.vmware.com/">VMWare</link> or <link xlink:href="http://www.qemu.org/">QEmu</link> virtual machine (the next best thing after a dedicated development machine).
Modifying a System for Development
For any kernel programming a kernel with <option>INVARIANTS</option> enabled is a must-have. So enter these in your kernel configuration file:
options INVARIANT_SUPPORT
options INVARIANTS
ComponentTranslation
This translation Translated FreeBSD Doc/articles_geom-class Introduction
The following strings have the same context and source.
Translated FreeBSD Doc/articles_gjournal-desktop Introduction
Translated FreeBSD Doc/articles_leap-seconds Introduction
Translated FreeBSD Doc/articles_linux-emulation Introduction
Translated FreeBSD Doc/articles_mailing-list-faq Introduction
Translated FreeBSD Doc/articles_pam Introduction
Translated FreeBSD Doc/articles_pr-guidelines Introduction
Translated FreeBSD Doc/articles_problem-reports Introduction
Translated FreeBSD Doc/articles_vm-design Introduction
Translated FreeBSD Doc/articles_freebsd-update-server Introduction
Translated FreeBSD Doc/articles_linux-users Introduction
Translated FreeBSD Doc/books_arch-handbook Introduction
Translated FreeBSD Doc/articles_releng Introduction
Translated FreeBSD Doc/articles_bsdl-gpl Introduction
Translated FreeBSD Doc/books_faq Introduction
Translated FreeBSD Doc/books_developers-handbook Introduction
Translated FreeBSD Doc/books_fdp-primer Introduction
Translated FreeBSD Doc/articles_building-products Introduction
Translated FreeBSD Doc/articles_committers-guide Introduction
Translated FreeBSD Doc/books_handbook Introduction
Translated FreeBSD Doc/books_porters-handbook Introduction
Translated FreeBSD Doc/articles_rc-scripting Introduction
Translated FreeBSD Doc/articles_remote-install Introduction
Translated FreeBSD Doc/articles_fonts Introduction
Translated FreeBSD Doc/articles_freebsd-questions Introduction

Loading…

No matching activity found.

Browse all component changes

Glossary

English English
No related strings found in the glossary.

Source information

Source string comment
(itstool) path: sect1/title
Flags
read-only
Source string location
article.translate.xml:50
String age
a year ago
Source string age
a year ago
Translation file
articles/geom-class.pot, string 10