.\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/share/man/man9/intro.9,v 1.15 2001/07/14 19:41:16 schweikh Exp % .\" .\" $FreeBSD$ .Dd December 13, 1995 .Dt INTRO 9 .Os .Sh 名称 .Nm intro .Nd システムカーネルインタフェースの紹介 .Sh 解説 このセクションはカーネル内のインタフェースとサブルーチンについての 情報を含んでいます。 .Sh ANSI-C 等のプロトタイプ お願いします。 .Pp 我々は全てのコードが完全にプロトタイプされていることを望みます。 .Pp あなたのコードが .Nm cc .Ar -Wall とした時にきれいにコンパイルできれば、我々は嬉しく思います。 これは .Nm cc を黙らせることが問題ではなく、 苦情の原因事象を避けることが問題であるということを理解することが重要です。 遠慮なしに言うと、キャストや他の不明瞭化する手法で問題を隠すのではなく、 問題を解決してください。 .Sh インデントとスタイル それを信用するかどうかは別として、 インデントとスタイルについてのガイドが現に存在します。 けれども広くは適用されていません。 .Pp 人々がそれに注意を払い、少なくとも露骨に違反しないならば、 我々はそれを認めるでしょう。 .Pp 我々はあまりにもひどくない限り、あなたの独自のスタイルを気にしませんが、 必ず我々にも読めるようにしてください。 .Pp 更に情報を得るために .Xr style 9 を読む時間を取ってください。 .Sh 命名規則 幾つかの一般的な規則があります。 .Bl -enum .It ある関数が DDB でのデバッグ支援を意図したものであるならば、 それは下記のように囲まれるべきです。 .Bd -literal -offset indent #ifdef DDB #endif /* DDB */ .Ed .Pp 加えて、関数の名前は、それがデバッガルーチンであることが明確にわかるように、 .Li DDB_ を接頭辞として始めるべきです。 .El .Sh シンボルのスコープ カーネル内のシンボルのスコープは注意深く考慮することが重要です。 何らかの理由でそう出来ない場合以外は、デフォルトでは全てを static にします。 .Pp この方針には幾つかの理由があります。 主な理由は、カーネルは単一の名前空間であることと、 ここでは名前空間の汚染もあまり名案ではないということです。 .Pp デバイスドライバと カーネルに新しい内部のインタフェースを追加しないモジュールでは、 可能であるならば全てのソースコードが一つのファイルであるべきです。 それは全てのシンボルを static にできる方法であるからです。 .Pp 何らかの理由によりモジュールが複数のファイルに分割される場合には、 大きな境界線に沿ってそのモジュールを分割するよう努力して、 グローバルなシンボルの数を手引にして熟考してください。 少ない方が好ましいです。 .Sh 関連項目 .Xr style 9 .Sh 歴史 .Nm セクションのマニュアルページは .Fx 2.2 で登場しました。