struct device_driver { const char *name; struct bus_type *bus; struct completion unloaded; struct kobject kobj; struct klist klist_devices; struct klist_node knode_bus; struct module *owner; int (*probe) (struct device *dev); int (*remove) (struct device *dev); int (*shutdown) (struct device *dev); int (*suspend) (struct device *dev, pm_message_t state, u32 level); int (*resume) (struct device *dev, u32 level); };
필드 | 설명 |
name | 디바이스 드라이버의 이름을 문자열 형으로 지정한다 (필수) |
bus | 보통은 &platform_bus_type으로 지정한다 (필수) |
unloaded | |
kobj | 내부적으로 드라이버 객체를 관리하기 위한 것으로 직접적으로 사용하지 않는다 (임의 지정하지 않는다) |
klist_devices | |
knode_bus | |
owner | |
probe() | 디바이스의 초기화 루틴이다 (필수) |
remove() | 디바이스가 제거될 때 호출되는 루틴이다 (필수) |
shutdown() | |
suspend() | 절전모드로 들어갈 때 호출된다 (필수) |
resume() | 절점모들 빠져나올 때 호출된다 (필수) |
int driver_register(struct device_driver *drv);
static struct device_driver foo_driver = { .name = "foo”, .bus = &platform_bus_type, .probe = foo_probe, .remove = foo_remove, .suspend = foo_suspend, .resume = foo_resume, }; static int __init foo_init(void) { int err; err = driver_register(&foo_driver); return err; }
void driver_unregister(struct device_driver *drv)