register_chrdev_region
__register_chrdev_region
alloc_chrdev_region
__register_chrdev_region
5.3.4.注册字符设备驱动新接口4
程序需要内存从哪里来:
全局变量: .data数据段 ,程序在加载时去执行,程序关闭就没有了,灵活性不够
局部变量: 栈 。用的时候自动分配,用完自动释放,太灵活
堆内存: 堆 。 用时需要申请,用完需要释放
5.3.4.1、使用cdev_alloc
(1)cdev_alloc的编程实践
(2)从内存角度体会cdev_alloc用与不用的差别
(3)这就是非面向对象的语言和面向对象的代码
(4)再次感叹C语言的博大精深,好好去看《4.C语言高级专题》
5.3.4.2、cdev_init的替代
(1)cdev_init源码分析
(2)不使用cdev_init时的编程
(3)为什么讲这个
5.3.5.字符设备驱动注册代码分析1
5.3.5.1、老接口分析
register_chrdev
__register_chrdev
__register_chrdev_region
cdev_alloc
cdev_add
static inline int register_chrdev(unsigned int major, const char *name,
const struct file_operations *fops)
{
return __register_chrdev(major, 0, 256, name, fops);
}
1. 一个函数只调用了 一个函数: 分层
__register_chrdev : 这个是内核调用的
0 : 次设备号
256 :
2. inline : 兼顾效率
register_chrdev 驱动调用
__register_chrdev 内核调用
__register_chrdev_region 注册 设备号
cdev_alloc 动态分配内存
cdev_add
5.3.5.2、新接口分析
register_chrdev_region
__register_chrdev_region
alloc_chrdev_region
__register_chrdev_region