易截截图软件、单文件、免安装、纯绿色、仅160KB

linux 2.6源代码情景分析笔记之中断与异常3

初始化中断描述符表
内核启用中断以前,必须把idt表的初始地址装到idtr寄存器,并初始化表中的每一项。这项工作是在初始化系统时完成。
int指令允许用户态进程发出一个中断信号,其值可以是0-255的任意一个向量。因此。为了防止用户通过int指令模拟非法的中断和异常,idt的初始化必须非常小心。这可以通过把中断或者陷阱门描述符的dpl字段设置成0来实现。如果进程试图发出其中的一个中断信号,控制单元将检查出cpl的数值与dpl的字段有冲突,并且产生一个general protection异常。
intel提供了三种类型的中断描述符:任务门,中断门,以及陷阱门描述符。linux使用与inetl不同的细目分类和术语:
中断门(interrupt gate)所有linux中断处理程序都通过中断门激活,全部限制在内核态。
系统门(system gate)用户态的进程可以访问一个intel陷阱门dpl字段为3.通过系统门来激活三个linux异常处理程序,向量是4,5,128.在用户态下,可以发布into,bound,int $0x80三条汇编语言指令。
系统中断门(system interrtup gate)能够被用户态进程访问的intel中断门(门的dpl字段为3)。与向量3相关的异常处理程序是由系统门中断门激活的,在用户态下,可以使用汇编语言指令int3.
陷阱门(trap gate)用户态的进程不能访问一个intel陷阱门(门的dpl字段为0)。大部分linux异常处理程序都通过陷阱门来激活。
任务门(task gate)不能被用户态进程访问的intel任务门(门的dpl字段为0)。linux对“double fault”异常处理程序是由任务门激活的。
下列体系结构相关的函数用来在idt中插入门。
在idt的第n个表项中插入一个中断门。门中的段选择符设置成内核代码的段选择符,偏移量设置为中断处理程序的地址addr,dpl字段设置为0.
void set_intr_gate(unsigned int n, void *addr)
{
        _set_gate(idt_table+n,14,0,addr,__KERNEL_CS);
}
在idt的第n个表项中插入一个陷阱门。门中的段选择符设置成为内核代码的段选择符,偏移量设置为异常处理程序的地址addr,dpl字段设置为3.
static void __init set_system_gate(unsigned int n, void *addr)
{
        _set_gate(idt_table+n,15,3,addr,__KERNEL_CS);
}
在idt的第n个表项插入一个中断门。门中的段选择符设置成内核代码的段选择符,偏移量设置为异常处理程序的地址addr,dpl字段设置为3.
static inline void set_s


相关文档:

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

linux内核函数笔记(二)

信号指定处理函数
void (*signal (int signum,void (*handle)(int)))(int);设置某个信号的处理方法
int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact);用于检查或改变进程在接到信号时的动作
信号集操作函数
static inline void sigaddset(sigset_t *set,int _sig);
static inline voi ......

Linux编程

一、Linux设计特点:多用户(多个用户可以同时登录,同一用户可以登录多次);多任务(同一程序可以有多个线程或进程并发执行);分时。
二、C开发环境:开发工具(包括编译器、连接器、gcc)、工程管理软件(make)、编辑器、分析调试工具gdb、函数库、版本控制系统CVS。(Perl不需要编译)。
三、在线文档:
1.manpage ......

Linux中文件的压缩与解压缩

对许多用户来说,在DOS和Windows环境下利用工具软件ARJ、Winzip等,压缩或解压文件是比较容易的事。但是,在Linux中如何对文件进行压缩与解压呢?本文基于Red Hat 6.0,介绍了压缩与解压文件的几种方法与技巧,希望对读者有一定的帮助。
命令:
compress
格式:
compress 选项 文件列表
功能:
用Lempel-ziv压缩方法 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号