= Kernel API 5 - Linux Driver Model(ext) = -- [김도집] [[DateTime]] * [wiki:KernelApi Kernel API 1 - Core(1/2)] * [wiki:KernelApi1 Kernel API 1 - Core(2/2)] * [wiki:KernelApi2 Kernel API 2 - Extension] * [wiki:KernelApi3 Kernel API 3 - Linux Driver Model] * [wiki:KernelApi4 Kernel API 4 - Porting(ARM)] * [wiki:KernelApi5 Kernel API 5 - Linux Driver Model(ext)] [[TableOfContents]] == platform == 관련 자료형 및 함수에 대한 것은 [wiki:KernelApi Kernel API 1 - Core(1/2)] 를 참고하라. == sysdev == 시스템 디바이스(cpu, timer, rtc 등)를 위한 드라이버 모델이다. 관련 자료형 및 함수는 에 선언되어 있다. === sysdev_class === 에 선언되어 있다. {{{#!vim c struct sysdev_class { struct list_head drivers; int (*shutdown)(struct sys_device *); int (*suspend)(struct sys_device *, pm_message_t state); int (*resume)(struct sys_device *); struct kset kset; }}} === sysdev_class_register === 에 선언되어 있다. {{{#!vim c int sysdev_class_register(struct sysdev_class *); }}} === sysdev_class_unregister === 에 선언되어 있다. {{{#!vim c void sysdev_class_unregister(struct sysdev_class); }}} === sysdev_driver === 에 선언되어 있다. {{{#!vim c struct sysdev_driver { struct list_head entry; int (*add)(struct sys_device *); int (*remove)(struct sys_device *); int (*shutdown)(struct sys_device *); int (*suspend)(struct sys_device *, pm_message_t state); int (*resume)(struct sys_device *); }; }}} === sys_device === 에 선언되어 있다. {{{#!vim c struct sys_device { u32 id; struct sysdev_class *cls; struct kobject kobj; }; }}} === sysdev_register === 에 선언되어 있다. {{{#!vim c int sysdev_register(struct sys_device *); }}} 관련함수: sysdev_unregister === sysdev_unregiser === 에 선언되어 있다. {{{#!vim c void sysdev_unregister(struct sys_device *); }}} 관련함수: sysdev_register === sysdev_attribute === 에 선언되어 있다. {{{#!vim c struct sysdev_attribute { struct attribute attr; ssize_t (*show)(struct sys_device *, char *); ssize_t (*store)(struct sys_device *, const char *, size_t); }; }}} === SYSDEV_ATTR === 에 선언되어 있다. sysdev_attribute형의 attr_##name으로 자료 구조체를 만드는 매크로이다. {{{#!vim c SYSDEV_ATTR(_name, _mode, _show, _store) }}} === sysdev_create_file === 에 선언되어 있다. {{{#!vim c int sysdev_create_file(struct sys_device *, struct sysdev_attribute *); }}} 관련함수: sysdev_remove_file === sysdev_remove_file === 에 선언되어 있다. {{{#!vim c void sysdev_remove_file(struct sys_device *, struct sysdev_attribute *); }}} 관련함수: sysdev_create_file