- 博客(21)
- 收藏
- 关注
转载 GDB
linux下core dump【总结】 转自:https://www.cnblogs.com/Anker/p/6079580.html 1、前言 一直在从事linux下后台开发,经常与core文件打交道。还记得刚开始从事linux下开发时,程序突然崩溃了,也没有任何日志。我不知所措,同事叫我看看core,我却问什么是core,怎么看。同事鄙视的眼神,我依然在目。后来学会了从core文件中分析原因,通过gd...
2021-03-25 21:43:54
118
转载 Linux kernel scatterlist
1. 前言 我们在那些需要和用户空间交互大量数据的子系统(例如MMC[1]、Video、Audio等)中,经常看到scatterlist的影子。对我们这些“非英语母语”的人来说,初见这个词汇,脑袋瞬间就蒙圈了。scatter可翻译成“散开、分散”,list是“列表”的意思,因而scatterlist可翻译为“散列表”。“散列表”又是什么?太抽象了! 之所以抽象,是因为这个词省略了主语----物理内存(Physi...
2021-03-10 20:21:37
154
原创 自旋锁
1:自旋锁是忙等待锁,,锁不可用时,cpu一直循环执行测试并设置改锁直到获得该锁,CPU忙等待不做任何操作,仅仅是忙等待因此只有在占用锁极短的情况下,使用自旋锁才是合理的,当临界区很大或者有共享设备的时候需要长时间占用该锁,使用自旋锁就会降低系统性能。2:自旋锁可能导致系统死锁。引发这个问题最常见的情况是递归使用一个自旋锁,即如果一个已经拥有某个自旋锁的CPU想第二次获取这个自旋锁则该CPU将死锁。3:自旋锁锁定期间不能调用可能引起进程调度的函数,如果获取自旋锁之后再阻塞,如调用copy_from_us
2021-03-10 14:45:04
113
转载 位域
随笔 - 30 文章 - 0 评论 - 36 阅读 - 11万C结构体之位域(位段)有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位
2021-03-10 10:47:11
92
原创 C语言指针和c++引用
c++引用和C指针区别在C和C++中,指针一般指的是某块内存的地址,通过这个地址,我们可以寻址到这块内存;而引用是一个变量的别名,例如我们给小明起了个外号:明明,那我们说明明的时候,就是说小明。对于指针来说,它是一个地址,这个地址是一个数值,那么就意味这个数值可以为0(空指针),也可以为其他,即指针可以不指向任何东西。而对于引用来说,他是一个外号,外号一定是“某个存在物体”的外号,所以引用不能为空,即不能存在空引用。根据以上可知指针和引用的一个重要不同:指针可以为空,引用不能为空。这就意味着我们拿到
2021-03-09 23:21:52
344
原创 const详解
c-const 1: const修饰局部变量 const int n=5; int const n=5; 这两种写法是一样的,都是表示变量n的值不能被改变了,需要注意的是,用const修饰变量时,一定要给变脸初始化,否则之后就不能再进行赋值了 2:const char* str="fdsafdsa"; 修饰常量字符串字符串不可以被修改 3:常量指针--指针常量 常量指针 const int * n;//指向的内容是...
2021-03-09 23:10:43
242
原创 2021-03-09
c-static static修饰全局变量,改变了变量的链接属性,使得这个全局变量只能在本文件中访问。 全局变量在本文件中访问 static修饰局部变量,使其生命周期变长,只在该作用域中使用,离开该作用域。该变量没有被销毁,还在内存中,即使再一次访问,还是上一次变量的值,直到程序运行结束才释放,被static修饰的局部变量放在静态区存储区 static修饰函数,改变了函数的链接属性,只能在本文件中调用,不能被其他文件访问 注意:静态变量可以多次赋值,但是只能初始化一次 c++- stat..
2021-03-09 22:45:51
59
原创 字符设备初始化过程
设备驱动注册过程1:申请设备号1:自动分配:alloc_chrdev_region(&devno, minor, count, "xxx");//设备号 , 次设备号起始值 ,次设备号数量 用于未知的设备号申请,devno是由MKDEV(主设备号,minor)得到的,(主设备号是自动分配的);2:手动分配:devno = MKDEV(major, minor); ret = register_chrdev_region(devno, count, "xxx
2021-03-09 17:28:53
200
原创 借助platform理总线设备驱动架构
soc中集成的独立的外设控制器、挂接在soc内存空间的外设等却不依赖此类总线,基于这一背景linux发明了一种虚拟总线platform总线,比较喜欢把soc的iic、rtc、lcd、看门狗等归纳为platform_device,以下模拟了platform_drive和platform_device设备的对应情况设备1:#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>
2021-03-09 16:09:15
102
1
原创 浅谈linux IO
IO模型1:阻塞式IO阻塞操作 指执行设备操作时若不能获取进程资源则进行睡眠,满足条件了唤醒继续执行。2,非阻塞式IO非阻塞操作 指进程在不能进行设备操作时并不睡眠而是立刻返回结果。3,io多路复用4,信号驱动IO阻塞IO依赖内核里面的等待队列(一下为API)定义“等待队列头”wait_queue_head_t my_queue; 初始化“等待队列头” init_waitqueue_head(&my_queue); 定义等待队列 DECLARE_WAITQUEUE
2021-03-09 11:24:36
129
原创 驱动基本结构
struct inode 结构体在内核中,使用一个struct inode 结构体,来唯一的表示一个文件。一个文件对应一个inode结构体。struct inode 存储的是文件的属性相关的信息。 // 当执行一次 mknod 创建的是设备节点文件,此时生成一个 struct inode 结构体struct inode { umode_t i_mode; // 打开方式 unsigned short i_opflags; kuid_t i_uid; // uid 用户
2021-03-09 10:52:26
217
转载 dma内存一致性
内核的dma一般在平台初始化的时候已经分配好了。但是对于一些有内部dma的硬件ip,比如usb ip、video加速ip,他们可能由ip厂商封装好的,没办法绑定到cpu端,这时候在内核使用dma就要注意了,因为dma只认识物理地址哦。 当然,办法还是有的,look: 以下来自:http://blog.csdn.net/zjujoe/archive/2009/05/15/4189612.aspx...
2021-02-26 18:03:41
504
转载 pci and pcie 详解
简介 PCI/PCIe设备有自己的独立地址空间,这部分空间会映射到整个系统的地址空间。 映射地址在BIOS/UEFI下指定(如果有的话,对于使用非BIOS启动的OS,不清楚),它有两种类型,一种是MMIO,一种是IO。对于MMIO的访问,跟访问内存的方式一样,它从称为PCIEXBAR的基地址开始,有很大的一段空间,这个PCIEXBAR的值根据不同的平台可能不同,大致可能值有0xC0000000、0xE00000...
2021-02-23 20:06:49
324
原创 tftp服务器配置
在ubuntu中搭建tftp服务器1.1 sudo apt-get install tftp-hpa tftpd-hpa xinetd在ubuntu中安装tftp的客户端、服务器和xinetd服务,安装期间保证ubuntu联网1.2 建立tftp服务文件目录mkdir /home/user/tftpboot #任意目录,自己记住就可以sudo chmod 777 /home...
2020-02-16 19:06:19
1209
原创 虚拟机配置net网络
NET模式设置VMnet8表示的是用于NAT模式下的虚拟交换机 该模式配置虚拟网路编辑器VMnet8子网(192.168.111.0掩码2855.255.255.0)net设置网关 192.168.111.2设置DHCP范围 192.168.111.50 - 192.168.111.254 配置虚拟机器 ip 192.168.111.129 子网...
2019-05-20 15:14:33
324
原创 container_of函数宏计算结构体地址
函数宏 container_of(ptr,type,member) 原理其实很简单 已知结构体type的成员member的地址ptr,求解结构体type的起始地址 ptr:代表结构体成员的真实地址 type:结构体的类型 member:结构体成员的名字 ...
2019-04-28 16:19:11
108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人