Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux中断处理体系结构分析

Linux中断处理体系结构分析

异常,就是可以打断CPU正常运行流程的一些事情,比如外部中断、未定义指令、试图修改只读的数据、执行swi指令(Software Interrupt Instruction ,软件中断指令)等。当这些事情发生时,CPU暂停当前的程序,先处理异常事件,然后再继续执行被中断的程序。操作系统中经常通过异常来完成一些特定的功能。其中的中断也占有很大的一部分。例如下面的这几种情况:当CPU执行未定义的机器指令时将触发“未定义指令异常”,操作系统可以利用这个特点使用一些...
Linux中继学习--按键驱动(使用中断方式)

Linux中继学习--按键驱动(使用中断方式)

这里主要是仿照《嵌入式Linux开发完全手册》 上的例子写的,下载见http://www.linuxidc.com/Linux/2011-01/31114.htm,只是增加了别外两个按按键。在我的mini2440开发板上有6个按键。在上两篇文章中,主要分析了驱动中的整体的流程,现在来看一个具体的例子,是如何使用中断的。1. 模块的初始化函数和卸载函数/* 执行"insmod mini2440_buttons.ko"命令时就会调用这个函数*/static i...
Syscall系统调用Linux内核跟踪

Syscall系统调用Linux内核跟踪

在Linux的用户空间,我们经常会调用系统调用,下面我们跟踪一下read系统调用,使用的Linux内核版本为Linux2.6.37。不同的Linux版本其中的实现略有不同。在一些应用中我们可以看到下面的一些定义:#define real_read(fd, buf, count ) (syscall(SYS_read, (fd), (buf), (count))) 其实真正调用的还是系统函数syscall(SYS_read),也就是sys_read()函数中...
Linux中与内核通信的Netlink机制(实例)

Linux中与内核通信的Netlink机制(实例)

Netlink在2.6版本的内核中变化也是很大的,在最新的2.6.37内核中,其定义已经改成下面这种形式,传递的参数已经达到6个。其中第一个参数和mutex参数都是最新添加的。Mutex也可以为空。这里主要是关于内核空间中的netlink函数的使用。extern struct sock *netlink_kernel_create(struct net *net, int unit,unsigned int groups, void (*input)(st...
Linux 内核中6to4隧道的处理流程

Linux 内核中6to4隧道的处理流程

当IP数据包上传给IP层时,有IP层的ip_rcv()函数进行接收,这个函数的主要作用就是检查这个数据包。这个函数不会处理不属于这个主机的数据包。也就是这个包的目标MAC地址不是本机的话,该函数就不会处理,而不是L3层的IP地址。这里我们可以看到pkt_type的类型是PACKET_OTHERHOST,说明这里是其它主机的数据包,直接进行丢弃处理。在网卡获取数据包的中断处理过程(ei_interrupt)中调用了ei_receive,而ei_receive...
Android:保存图片到Sqlite数据库

Android:保存图片到Sqlite数据库

原理:图片是二进制文件,所以使用blob类型,将图片转换成字节数组,存储到数据库中。方法一:publicvoidsaveIcon(Bitmapicon){if(icon==null){return;}//最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为图片是二进制的所以使用字节数组存储数据库的 //BLOB类型 finalByteArrayOutputStreamos=newByteArrayOutput...
ARM-MDK4.12关于中断奇怪的BUG

ARM-MDK4.12关于中断奇怪的BUG

调一个程序,遇到了一个非常奇怪的问题,至今也不知道是为什么,但是,总算解决了,知道问题出在哪,但不知道根本原因在哪。想不通,先不去想了。把这个问题记录下来吧。本来已经调试好的串口中断接收程序,和触屏校正程序,组合到一起就发现串口中断无法进入,但用查询的方式却能发送数据到电脑上,找了很久,把触摸屏程序先屏蔽看看怎么样。不做不知道,一试吓一跳!把触摸屏程序屏蔽了竟然串口中断又能正常进入了!初步知道问题是出在触摸屏上了。于是再一步步的测试,最后更让我吃惊的的事情...
Shell脚本学习:快速理解正则表达式之grep篇

Shell脚本学习:快速理解正则表达式之grep篇

shell脚本是Linux的核心之一,而正则表达式是shell脚本的核心之一,理解正则表达式可以快速匹配需要查找的内容,对以后的shell脚本编程打下一个坚实的基础。接触正则表达式一般从grep命令开始,例如:grep "^#[:space:]*" /etc/inittab这个命令中“^#[:space:]*”就是正则表达式的内容,它的意思是“以#开头后跟任意个空格”,结合grep命令,就是显示/etc/inittab文件里“以#开头后跟任意个空格”的内容...
C++内存泄漏跨平台的检测方法

C++内存泄漏跨平台的检测方法

内存泄漏对于C/C++程序员来说也可以算作是个永恒的话题了吧。在Windows下,MFC的一个很有用的功能就是能在程序运行结束时报告是否发生了内存泄漏。在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性、附加开销和性能都不是很理想。本文实现一个极易于使用、跨平台的C++内存泄漏检测器。并对相关的技术问题作一下探讨。基本使用对于下面这样的一个简单程序test.cpp:intmain(){int*p1=newint;...
在CentOS上安装rpmbuild

在CentOS上安装rpmbuild

rpm-build 包和 /usr/src/RedHat ,这些 rpm build 的程序是要靠 spec 文件的控制。它是配置指定安装到另外的机器上的,用来指示转换的源码补丁编译成二进制文件的包。默认编译操作是在下面的目录中,它是编译源码的相关动作操作的位置。如果不指定其它的地方,那么 rpm building 的地方是主要在 /usr/src/redhat 的目录,目录的架构如下,这就是为 rpm-build 提供的目录结构./usr/src/red...
<< 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 >>