第 11 章:I/O 设备抽象
学习目标
- 设计设备接口
- 实现设备注册
- 理解回调机制
11.1 思考:如何统一管理设备?
UART、Timer、CLINT… 每个设备都不同,如何统一管理?
答案:抽象!
typedef struct {
const char *name;
uint32_t base;
uint32_t size;
uint32_t (*read)(uint32_t addr);
void (*write)(uint32_t addr, uint32_t data);
} Device;
11.2 设备注册
Device devices[10];
int dev_count = 0;
void register_device(Device *dev) {
devices[dev_count++] = *dev;
}