doc/ja_JP.eucJP/man/man9/module.9
SUZUKI Koichi d100276457 Catch up with 5.3-BETA1 for man9.
Submitted by:   Akira Ikeuchi <a_ikeuchi@mic.mitsumi.co.jp>
Reviewed by:    Watanabe Kazuhiro <CQG00620@nifty.ne.jp>
2004-09-21 21:00:59 +00:00

114 lines
3.4 KiB
Groff

.\" -*- nroff -*-
.\"
.\" Copyright (c) 2000 Alexander Langer
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" 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.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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/module.9,v 1.8 2004/07/13 19:36:58 phk Exp %
.\"
.\" $FreeBSD$
.Dd March 1, 2001
.Dt MODULE 9
.Os
.Sh 名称
.Nm module
.Nd カーネルモジュールの構造記述
.Sh 解説
カーネル内の個々のモジュールは
.Vt module_t
構造体によって記述されます。
この構造体は、幾つかのカーネルの内部データはもちろん、デバイスの名前、
固有の ID 番号、イベントハンドラ関数へのポインタ、および
イベントハンドラに渡される引数を含んでいます。
.Pp
.Xr DECLARE_MODULE 9
マクロはシステムにモジュールを登録します。
.Pp
そのモジュールがロードされた時に、
.Fa what
引数に
.Dv MOD_LOAD
が設定されて、イベントハンドラ関数が呼び出されます。
.Pp
アンロード時は最初に
.Fa what
に MOD_QUIESCE が設定されて呼び出されます。
アンロードが強制されなかった場合には、0 ではない値が返ることで
アンロードの発生を防ぎます。
.Pp
アンロードが継続する場合には
.Fa what
.Dv MOD_UNLOAD
が設定されます。
モジュールがこれに 0 ではない値を返す場合には、アンロードは起こりません。
.Pp
MOD_QUIESCE と MOD_UNLOAD の違いは、モジュールが使用中であれば
モジュールは MOD_QUIESCE を失敗させるべきであり、それに対して、
モジュールのアンロードが不可能な場合にのみ MOD_UNLOAD が失敗するべきです。
例えば、解除することができないそのモジュールへのメモリ参照がある場合です。
.Pp
システムがシャットダウンされる時には、
.Fa what
.Dv MOD_SHUTDOWN
の値を含みます。
.Pp
モジュールは
.Fa what
の値を認識できない場合は EOPNOTSUPP を返すべきです。
.Sh 使用例
.Bd -literal
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/module.h>
static int foo_handler(module_t mod, int /*modeventtype_t*/ what,
void *arg);
static moduledata_t mod_data= {
"foo",
foo_handler,
0
};
MODULE_VERSION(foo, 1);
MODULE_DEPEND(foo, bar, 1, 3, 4);
DECLARE_MODULE(foo, mod_data, SI_SUB_EXEC, SI_ORDER_ANY);
.Ed
.Sh 関連項目
.Xr DECLARE_MODULE 9 ,
.Xr DEV_MODULE 9 ,
.Xr DRIVER_MODULE 9 ,
.Xr MODULE_DEPEND 9 ,
.Xr MODULE_VERSION 9 ,
.Xr SYSCALL_MODULE 9
.Pp
.Pa /usr/share/examples/kld
.Sh 作者
このマニュアルページは
.An Alexander Langer Aq alex@FreeBSD.org
が書きました。