tail head cat sleep
QR code linking to this page

Man page  — DRIVER

명칭

driver – 디바이스 드라이버를 기술하는 구조체

내용

서식

#include <sys/param.h>
#include <sys/bus.h>

static int foo_probe(device_t); static int foo_attach(device_t); static int foo_detach(device_t); static int foo_frob(device_t, int, int); static int foo_twiddle(device_t, char *);

static struct device_method foo_methods[] = {         /* 디바이스 인터페이스로부터의 메소드 */         DEVMETHOD(device_probe,         foo_probe),         DEVMETHOD(device_attach,        foo_attach),         DEVMETHOD(device_detach,        foo_detach),

        /* bogo 인터페이스로부터의 메소드 */         DEVMETHOD(bogo_frob,            foo_frob),         DEVMETHOD(bogo_twiddle,         foo_twiddle),

        /* 메소드 리스트의 종단 */         { 0, 0 } };

static driver_t foo_driver {         "foo",         foo_methods,         DRIVER_TYPE_MISC,         sizeof(struct foo_softc), };

static devclass_t foo_devclass;

DRIVER_MODULE(foo, bogo, foo_driver, foo_devclass, 0, 0);

해설

커널안의 개개의 드라이버는 driver_t 구조체에 의해 기술됩니다. 이 구조체는 디바이스의 명칭, 메소드의 리스트에의 포인터, 드라이버가 실장한 디바이스의 종류의 표시, 및 드라이버가 디바이스 인스턴스에 관련짓기 위해서(때문에) 필요한 사적 데이터의 크기 (을)를 포함하고 있습니다. 각각의 드라이버는 1 개 이상의 (인터페이스로 불린다) 메소드의 조를 실장합니다. 상기의 예의 드라이버는 표준의 "driver" 인터페이스와 가상적인 "bogo" 인터페이스를 실장하고 있습니다.

드라이버가 ( DRIVER_MODULE 매크로에 의해, DRIVER_MODULE(9) (을)를 참조) 시스템에 등록될 때에, 그 부모의 버스 타입의 devclass 안에 포함되어 있다 드라이버의 리스트에 추가됩니다. 예를 들면, 모든 PCI 드라이버는 "pci" 라고 명명된 devclass 에 포함되어 모든 ISA 드라이버는 "isa" 라고 명명된 devclass 에 포함됩니다. 드라이버가 부모의 버스의 디바이스 오브젝트안에 보관 유지되지 않는 이유는, 주어진 버스의 타입의 복수의 인스턴스를 취급하기 (위해)때문입니다. DRIVER_MODULE 매크로는 그 드라이버의 이름의 devclass 도 생성합니다. 마지막 2 개의 인수로서 추가의 모듈 이벤트 핸들러와 그 인수를 주는 것에 의해, 옵션으로 드라이버의 추가의 초기화 코드를 호출할 수가 있습니다.

관련 항목

devclass(9), device(9), DRIVER_MODULE(9)

저자

이 메뉴얼 페이지는 Doug Rabson 하지만 썼습니다.

DRIVER (9) June 16, 1998

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

If it wasn't for C, we'd be using BASI, PASAL and OBOL