
linux
Mr0cheng
这个作者很懒,什么都没留下…
展开
-
linux异步IO:io_uring
为了改善posix aio目前存在的问题,新的异步IO驱动:io_uring如何解决了posix aio的问题。围绕这个问题,本文首先介绍了异步IO的概念,然后介绍了posix aio存在的问题,最后根据io_uring的源码分析io_uring为什么比posix aio优异。同步IO和异步IOposix定义如下:同步IO:导致请求进程阻塞,知道IO操作完成。异步IO:不导致请求进程阻塞。...原创 2020-03-18 21:23:56 · 1420 阅读 · 0 评论 -
Unexporting kallsyms_lookup_name
kallsyms_lookup_name函数可以通过函数名字获取对应的地址。unexporting kallsyms_lookup_name意味着out-of-tree的驱动不能够利用kallsyms_lookup_name函数调用未导出的内核函数。unexporting kallsyms_lookup_name可能会造成的影响如下:live patch:live patch需要kallsy...原创 2020-03-16 17:22:14 · 1341 阅读 · 0 评论 -
linux high memory机制引发的问题
linux high memory32bit操作系统:linux将逻辑地址空间分为两部分:0-3G是用户地址空间,3-4G是内核地址空间。所以linux内核只能够访问物理地址空间大小为1G,也就是物理地址0-1G。为了能够访问所有的物理地址空间,linux提出了high memory机制:从内核地址空间划分出一部分作为high memory,该区域的逻辑地址可以动态的去映射到其他的物理地址。...原创 2020-03-15 12:38:03 · 948 阅读 · 0 评论 -
ubuntu18版本使用S32DS遇到的问题
1. S32DS编译项目时,没有出现elf文件;出现错误:arm-none-eabi-gcc not found去Cross_Tools/gcc-arm-none-eabi_4_9/bin发现有arm-none-eabi-gcc尝试运行./arm-none-eabi-gcc,出现./arm-none-eabi-gcc:没有那个文件或目录的错误百度下错误,安装sudo apt install...原创 2018-11-20 11:24:18 · 3114 阅读 · 0 评论 -
深入浅出down_interruptible
https://blog.youkuaiyun.com/ce123_zhouwei/article/details/7547973int down_interruptible(struct semaphore *sem)这个函数的功能就是获得信号量,如果得不到信号量就睡眠,此时没有信号打断,那么进入睡眠。但是在睡眠过程中可能被信号打断,打断之后返回-EINTR,主要用来进程间的互斥同步。下面是该函数...转载 2018-10-24 17:24:19 · 263 阅读 · 0 评论 -
一年后再次回头看container_of宏的作用
https://blog.youkuaiyun.com/morixinguan/article/details/54343360container_of宏在很久以前的文章我就已经有分析写过了,但是看回去,感觉以前自己对这个宏的表达描述分析能力还是有待提高,毕竟那时候刚接触linux内核不久,整个人都懵懵哒,无法说得让别人通俗易懂。那么这个宏整体是什么样子的呢?//获取结构体成员相对于结构体的偏移 ...转载 2018-10-24 17:15:18 · 239 阅读 · 0 评论 -
浅析字符设备驱动程序__register_chrdev_region
https://blog.youkuaiyun.com/lizuobin2/article/details/52695533在 2.4 的内核我们使用 register_chrdev(0, “hello”, &hello_fops) 来进行字符设备设备节点的分配,这种方式每一个主设备号只能存放一种设备,它们使用相同的 file_operation 结构体,也就是说内核最多支持 256 个字符设备...转载 2018-10-24 16:52:35 · 217 阅读 · 0 评论 -
linux内核、驱动和硬件之间的关系和通信
linux驱动是直接和硬件打交道的软件程序。层次结构上它处于操作系统和硬件之间。驱动与linux内核的关系驱动程序提供的一组设备驱动接口函数Device Driver Interface给操作系统在linux中,这一组设备驱动接口函数一般包括open,close,read,write,ioctl等。 这一组函数是通过一个叫做file operations的结构体注册给linux内核的。 ...转载 2018-10-23 13:16:38 · 5513 阅读 · 0 评论 -
用户态切换到内核态的过程
https://www.tldp.org/HOWTO/KernelAnalysis-HOWTO-3.html1. When do we switch?Once we understand that there are 2 different modes, we have to know when we switch from one to the other.Typically, the...转载 2018-10-20 13:40:35 · 932 阅读 · 0 评论 -
Jetson TX2重新编译内核过程记录
因为要装dpdk,需要uio模块,但是tx2原装的系统没有这个模块,故重新编译内核。1. 获取TX2 linux内核源码wget http://developer.download.nvidia.com/embedded/L4T/r28_Release_v1.0/BSP/source_release.tbz22. 获取当前系统的配置文件进入内核目录下,即kernel-4.4/zcat...原创 2018-10-17 18:05:30 · 3625 阅读 · 3 评论