Kernel API 5 - Linux Driver Model(ext) #
--
김도집 2025-01-12 08:51:21
시스템 디바이스(cpu, timer, rtc 등)를 위한 드라이버 모델이다.
관련 자료형 및 함수는 <linux/sysdev.h>에 선언되어 있다.
1.2.1 sysdev_class #
<linux/sysdev.h>에 선언되어 있다.
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;
1.2.2 sysdev_class_register #
<linux/sysdev.h>에 선언되어 있다.
int sysdev_class_register(struct sysdev_class *);
1.2.3 sysdev_class_unregister #
<linux/sysdev.h>에 선언되어 있다.
void sysdev_class_unregister(struct sysdev_class);
1.2.4 sysdev_driver #
<linux/sysdev.h>에 선언되어 있다.
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 *);
};
<linux/sysdev.h>에 선언되어 있다.
struct sys_device {
u32 id;
struct sysdev_class *cls;
struct kobject kobj;
};
1.2.6 sysdev_register #
<linux/sysdev.h>에 선언되어 있다.
int sysdev_register(struct sys_device *);
관련함수: sysdev_unregister
1.2.7 sysdev_unregiser #
<linux/sysdev.h>에 선언되어 있다.
void sysdev_unregister(struct sys_device *);
관련함수: sysdev_register
1.2.8 sysdev_attribute #
<linux/sysdev.h>에 선언되어 있다.
struct sysdev_attribute {
struct attribute attr;
ssize_t (*show)(struct sys_device *, char *);
ssize_t (*store)(struct sys_device *, const char *, size_t);
};
1.2.9 SYSDEV_ATTR #
<linux/sysdev.h>에 선언되어 있다.
sysdev_attribute형의 attr_##name으로 자료 구조체를 만드는 매크로이다.
SYSDEV_ATTR(_name, _mode, _show, _store)
1.2.10 sysdev_create_file #
<linux/sysdev.h>에 선언되어 있다.
int sysdev_create_file(struct sys_device *, struct sysdev_attribute *);
관련함수: sysdev_remove_file
1.2.11 sysdev_remove_file #
<linux/sysdev.h>에 선언되어 있다.
void sysdev_remove_file(struct sys_device *, struct sysdev_attribute *);
관련함수: sysdev_create_file
1.3.1 firmware API #
함수 | 설명 |
request_firmware | |
request_firmware_nowait | |
release_firmware | |
1.3.1.1 request_firmware #
int request_firmware(const struct firmware **fw, char *name, struct device *device);
1.3.1.2 request_firmware_nowait #
int request_firmware_nowait(struct module *module, char *name, struct device *device,
void *context, void (*cont)(const struct firmware *fw,
void *context));
1.3.1.3 release_firmware #
void release_firmware(struct firmware *fw);