113 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			113 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/DRIVER_MODULE.9,v 1.10 2001/12/26 23:14:04 davidc Exp %
 | |
| .\"
 | |
| .\" $FreeBSD$
 | |
| .Dd May 16, 2000
 | |
| .Dt DRIVER_MODULE 9
 | |
| .Os
 | |
| .Sh 名称
 | |
| .Nm DRIVER_MODULE
 | |
| .Nd カーネルドライバ宣言マクロ
 | |
| .Sh 書式
 | |
| .In sys/param.h
 | |
| .In sys/kernel.h
 | |
| .In sys/bus.h
 | |
| .In sys/module.h
 | |
| .Fn DRIVER_MODULE name busname "driver_t driver" "devclass_t devclass" "modeventhand_t evh" "void *arg"
 | |
| .Fn MULTI_DRIVER_MODULE name busname "driver_t drivers[]" "devclass_t devclass" "modeventhand_t evh" "void *arg"
 | |
| .Sh 解説
 | |
| .Fn DRIVER_MODULE
 | |
| マクロは、カーネルドライバを宣言します。
 | |
| .Fn DRIVER_MODULE
 | |
| は実際のドライバ宣言に展開し、そこで
 | |
| .Fa name
 | |
| はドライバとその関数の接頭辞として使用されます。
 | |
| これはプレインテキストとして与えられ、
 | |
| .Li char
 | |
| または
 | |
| .Li char *
 | |
| ではないことに注意してください。
 | |
| .Pp
 | |
| .Fa busname
 | |
| はドライバの親のバス (PCI, ISA, PPBUS, その他) で、
 | |
| .Ql pci ,
 | |
| .Ql isa ,
 | |
| .Ql ppbus
 | |
| 等です。
 | |
| .Pp
 | |
| .Fn DRIVER_MODULE
 | |
| の中で使用される識別子は、ドライバの名前と別のものにすることができます。
 | |
| また、異なるバス上には同じドライバ識別子が存在できます。
 | |
| これは、同じドライバを使用する同一または異なるバス上の種々のカード用に、
 | |
| フロントエンドをうまくきれいに作成する方法です。
 | |
| 例えば、次のようにできます。
 | |
| .Pp
 | |
| .Fn DRIVER_MODULE foo isa foo_driver foo_devclass NULL NULL ;
 | |
| .Pp
 | |
| .Fn DRIVER_MODULE foo pci foo_driver foo_devclass NULL NULL ;
 | |
| .Pp
 | |
| .Fa driver
 | |
| は
 | |
| .Li driver_t
 | |
| 型のドライバで、ドライバについての情報を含み、それゆえ
 | |
| .Fn DRIVER_MODULE
 | |
| を呼び出すための最も重要な 2 つの部分のうちの 1 つです。
 | |
| .Pp
 | |
| 引数
 | |
| .Fa devclass
 | |
| はデバイスについてのカーネル内部の情報を含み、
 | |
| カーネルドライバモジュールの内部で使用されます。
 | |
| .Pp
 | |
| 引数
 | |
| .Fa evh
 | |
| はドライバ (またはモジュール) がロードまたはアンロードされた時に
 | |
| 呼び出されるイベントハンドラです (
 | |
| .Xr module 9
 | |
| を参照してください)。
 | |
| .Pp
 | |
| 現時点では
 | |
| .Fa arg
 | |
| は使用されず、
 | |
| .Dv NULL
 | |
| ポインタであるべきです。
 | |
| .Pp
 | |
| .Fn MULTI_DRIVER_MODULE
 | |
| は
 | |
| .Fn DRIVER_MODULE
 | |
| の特殊バージョンであり、
 | |
| 単一のドライバインスタンスの代りにドライバリストを取ります。
 | |
| .Sh 関連項目
 | |
| .Xr device 9 ,
 | |
| .Xr driver 9 ,
 | |
| .Xr module 9
 | |
| .Sh 作者
 | |
| このマニュアルページは
 | |
| .An Alexander Langer Aq alex@FreeBSD.org
 | |
| が書きました。
 |