
linux
文章平均质量分 83
ONIM
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
centos8 内核热补丁kpatch制作详解
0x00 测试环境发行版:CentOS Linux release 8.0.1905 (Core)内核版本:4.18.0-305.10.2.el8_4.x86_640x01. 准备kpatch1.先从github上把kpatch工具下载一下git clone GitHub - dynup/kpatch: kpatch - live kernel patching2.进入到kpacth目录执行买这一步会安装好kpatch所需的依赖:source test/integrati原创 2022-01-10 14:49:03 · 2384 阅读 · 0 评论 -
【翻译】ARM虚拟化软件和架构支持的设计,实现和评估
这是一篇论文:https://academiccommons.columbia.edu/doi/10.7916/D8D238J2/download学习ARM虚拟化非常好的材料,这里翻译了其中几个章节。------------------------------------------------------------------------------------------------...翻译 2019-09-03 16:24:29 · 1503 阅读 · 2 评论 -
关于unlocked_ioctl
今天写了一个简单的led驱动,原创 2014-08-09 19:34:47 · 1629 阅读 · 0 评论 -
什么是进程上下文,什么是中断上下文
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间转载 2015-07-23 09:25:18 · 595 阅读 · 0 评论 -
Linux 进程虚拟内存的问题
Linux中用户进程线性地址能寻址的范围是0 - 3G,那么是不是需要提前先把这3G虚拟内存的页表都建立好呢?一般情况下,物理内存是远远小于3G的,加上同时有很多进程都在运行,根本无法给每个进程提前建立3G的线性地址页表。Linux利用CPU的一个机制解决了这个问题。进程创建后我们可以给页目录表的表项值都填0,CPU在查找页表时,如果表项的内容为0,则会引发一个缺页异常,进程暂停执行,Linux内转载 2015-03-20 08:58:11 · 703 阅读 · 0 评论 -
s3c6410外部中断号与引脚问题
在编写Linux驱动程序时,我想用某一个引脚做外部中断。但是在调用int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, struct pt_regs *regs ),unsigned long irqflags, const char * devname, void *dev_id)原创 2015-03-15 09:39:39 · 1818 阅读 · 0 评论 -
内核崩溃分析
oops是英语口语"糟糕"的意思,当LINUX 内核发生严重错误时,比如内存段错误时,将会提示一大段信息。就提示 Oops(也称 panic),因此得名,Oops提示信息相当多,包括出问题时的,各个常用寄存器的值,调用的堆栈,以及出错的可能原因1.oops 的格式 内核的文档里的详细的Oops的说明,的名字是 Documentation/oops-tracing转载 2014-12-24 22:34:23 · 1591 阅读 · 0 评论 -
进程上下文和中断上下文
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间转载 2014-12-21 10:49:30 · 594 阅读 · 0 评论 -
linux内核cdev_init系列函数(字符设备的注册)
内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev { struct kobject kobj; // 每个 cdev 都是一个 kobject struct module *owner; // 指向实现驱动的模块 const转载 2014-07-12 15:19:12 · 919 阅读 · 0 评论 -
LINUX设备驱动之platform总线
Platform总线是kernel中的一种虚拟总线,2.6版本很多驱动都用它来实现。一.Platform初始化系统启动时初始化时创建了platform_bus设备和platform_bus_type总线:内核初始化函数kernel_init()中调用了do_basic_setup() ,该函数中调用driver_init(),该函数中调用platform_bus_init(转载 2014-04-09 13:42:55 · 1297 阅读 · 0 评论 -
基于tiny6410 的led驱动
由于快要断网了,这里简单记录一点我的第一个linux驱动终原创 2014-04-04 23:23:12 · 852 阅读 · 0 评论 -
linux驱动之 platform分析
z在设备驱动程序中经常会见到和platform相关的字段,分布在驱动程序的多个角落,这也是2.6内核中比较重要的一种机制,把它的原理弄懂了,对以后分析驱动程序很有帮助,下面简单介绍一下: 在linux2.6设备模型中,关心总线,设备,驱动这三个实体,总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动。相反,在系统每注册一个驱动的时候,寻找与之匹配的设备,匹转载 2014-04-17 21:38:32 · 1009 阅读 · 0 评论 -
在嵌入式linux执行程序not found有关问题的解决
在嵌入式linux执行程序not found问题的解决 在嵌入式环境中执行某些编译后的程序时经常会报出 not found问题,这是因为程序在目标环境中执行时,某些库链接不上。解决此问题需要在编译选项中添加-static参数。gcc -static -o hello hello.c转载 2014-04-01 11:18:09 · 1724 阅读 · 0 评论 -
关于 CONFIG_SERIAL_SAMSUNG_UARTS
1.在linux串口驱动程序中,在/drivers/serial/samsung.c里有这么一个定义CONFIG_SERIAL_SAMSUNG_UARTS,它的意思为串口数量,但是这个宏没有定义在.c或.h文件里,而是定义在/include/linux/serial/Kconfig里面。详细如下:config SERIAL_SAMSUNG_UARTSint转载 2014-04-14 20:39:11 · 1753 阅读 · 0 评论 -
Select函数实现原理分析
Select函数实现原理分析(转载)select需要驱动程序的支持,驱动程序实现fops内的poll函数。select通过每个设备文件对应的poll函数提供的信息判断当前是否有资源可用(如可读或写),如果有的话则返回可用资源的文件描述符个数,没有的话则睡眠,等待有资源变为可用时再被唤醒继续执行。下面我们分两个过程来分析select:1. select的睡眠过程支持阻转载 2014-03-30 14:58:00 · 919 阅读 · 0 评论 -
深入分析request_irq的dev_id参数作用
request_irq的作用是申请使用IRQ并注册中断处理程序。request_irq()函数的原型如下:/* kernel/irq/manage.c */int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigne转载 2014-04-13 14:52:53 · 884 阅读 · 0 评论