![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Driver&Kernel
yxtxiaotian
这个作者很懒,什么都没留下…
展开
-
ioctl()分析——从用户空间到设备驱动
一个字符设备驱动通常会实现常规的打开、关闭、读、写等功能,但在一些细分的情境下,如果需要扩展新的功能,通常以增设ioctl()命令的方式实现,其作用类似于“拾遗补漏”。在文件I/O中,ioctl扮演着重要角色,本文将以驱动开发为侧重点,从用户空间到内核空间纵向分析ioctl函数。 用户空间的ioctl()#include <sys/ioctl.h> int ioctl...转载 2018-10-23 10:28:05 · 971 阅读 · 0 评论 -
module_init解析
module_init这个函数的具体功能和执行过程,在kernel源码目录中找到include\linux\init.h文件 #define module_init(x) __initcall(x); 有对module_init 的定义,我们发现 module_init(x) 是一个宏定义,那么_initcall(x)又是什么呢?#define __initcall(fn) d...转载 2018-11-12 09:13:23 · 678 阅读 · 0 评论 -
linux内核中的copy_to_user和copy_from_user
Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123)1.copy_from_user在学习Linux内核驱动的时候,经常会碰到copy_from_user和copy_to_user这两个函数,设备驱动程序中的ioctl函数就经常会用到。这两个函数负责在用户空间和内核...转载 2018-11-12 10:19:06 · 1625 阅读 · 0 评论 -
linux内核中的get_user和put_user
内核版本:2.6.14CPU平台:arm嵌入式开发交流群:289195589,欢迎加入!在内核空间和用户空间交换数据时,get_user和put_user是两个两用的函数。相对于copy_to_user和copy_from_user(将在另一篇博客 linux内核中的copy_to_user和copy_from_user 中分析),这两个函数主要用于完成一些简单类型变量(char、in...转载 2018-11-12 10:28:32 · 5821 阅读 · 0 评论 -
深入浅出Linux 设备驱动编程
【转自】https://www.cnblogs.com/zhang-xiao/archive/2013/01/02/2842351.html目录1.引言2.Linux 内核模块 3.字符设备驱动程序4.设备驱动中的并发控制5.设备的阻塞与非阻塞操作6.设备驱动中的异步通知7.设备驱动中的中断处理8.定时器9.内存与I/O 操作10.结构化设备驱动程序...转载 2018-11-12 11:25:41 · 1237 阅读 · 2 评论 -
kmalloc/kzalloc/vmalloc/malloc和get_free_page的区别
目录1. 简述2. linux内存分布图:2.1 kmalloc2.1.1 kmalloc和get_free_page申请内存方式2.1.2 kmalloc的用法3、kzalloc4、vmalloc5、kmalloc、get_free_page和vmalloc的区别:6、用户空间申请内存malloc1. 简述kmalloc申请的是较小的连续的物理内存,...转载 2018-11-19 09:31:07 · 398 阅读 · 0 评论 -
kmalloc分配内存大小的限制和宏的一种用法
kmalloc是通过cache来实现的, 只不过每次kmalloc的大小不同, 因此是从不同的cache中分配:/* include/linux/slab.h */// 注意kmalloc是在头文件中定义的static inline void *kmalloc(size_t size, gfp_t flags){ if (__builtin_constant_p(size)) ...转载 2018-11-19 17:58:17 · 1112 阅读 · 0 评论 -
Linux内存管理之SLAB内存分配器
目录一、前言1、 为什么需要SLAB内存分配器2、 SLAB内存分配器作用3、 SLAB内存分配器工作机制4、 SLAB相关说明 (1)SLAB与伙伴(Buddy)算法 (2)SLAB与对象 (3)SLAB与per-CPU缓存二、SLAB内存分配器结构分析1、SLAB内存分配器高层组织结构2、 kmem_cache定义3、km...原创 2018-11-20 09:23:28 · 1279 阅读 · 0 评论 -
Linux下uboot学习备记
1、uboot不可以在挂载目录下进行配置和编译uboot在编译之前需要先根据不同开发板进行配置,比如"make x210_sd_config"进行配置之后,才可以执行"make"进行编译;注意uboot在Makefile文件中引入了uboot编译配置文件mkconfig,mkconfig内部会有创建符合链接的指令,所以配置编译uboot的时候不可以在挂载目录下进行【使用虚拟机编译windows...原创 2018-11-26 10:51:27 · 319 阅读 · 1 评论