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

linux 2.6源代码情景分析笔记之进程9

intel在他的微处理器中引入一个新的汇编指令集,叫做MMX指令,用来加速多媒体应用程序的执行。mmx指令作用于fpu的浮点寄存器。
80x86微处理器并不在tss中自动保存fpu,mmx,xmm寄存器。他们包含某种硬件支持,能在需要时保存这些寄存器的数值,硬件支持由cr0寄存器中的一个ts标志组成。遵循以下规则:
每当执行硬件上下文切换时,设置ts标志。
每当ts标志被设置时执行ESCAPE,MMX,SSE,SSE2指令,控制单元就产生一个device not available异常。
为处理fpu,mmx,xmm寄存器的选择性装入而引入的数据结构。它们存放在进程描述符的thread.i387子字段中,其格式由i387_union联合体描述:
union i387_union {
        struct i387_fsave_struct        fsave;由具有数学协处理器、也可能有mmx单元的cpu模型使用。
        struct i387_fxsave_struct       fxsave;由具有see,sse2扩展功能的cpu模型使用。
        struct i387_soft_struct        soft;由无数学协处理器的cpu模型使用;linux内核通过软件模拟协处理器来支持这些老式芯片。
};
进程描述符包含两个附加的标志:
包含在thread_info描述符的status字段中的TS_USEDFPU标志。它表示进程在当前执行过程中是否使用过fpu,mmx,xmm寄存器。
包含在task_struct描述符的flags字段中的PF_USED_MATH标志。这个标志表示thread.i387子字段的内容是否有意义。该标志在两种情况下被清0.
当进程调用execve()系统调用开始执行一个新程序时,因为控制权将不再返回到前一个程序,所以当前存放在thread.i387中的数据也不再使用。
当在用户态下执行一个程序的进程开始执行一个信号处理程序时。因为信号处理程序与程序的执行流是异步的,因此,浮点寄存器对信号处理程序来说可能是毫无意义的。不过,内核开始执行信号处理程序之前在thread.i387中保存浮点寄存器,处理程序结束后恢复它们。因此信号处理程序可以使用数学协处理器。
struct i387_fsave_struct {
        long    cwd;
        long    swd;
        long    t


相关文档:

实战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 Bluetooth编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

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

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

linux 0.11 copy_page_tables()函数

/* 他通过只复制内存页面来复制一定范围内的线性地址的内容*/
00150int copy_page_tables(unsigned long from,unsigned long to,long size)
00151 {
00152     unsigned long * from_page_table;
00153     unsigned long * to_page_table;
00154     un ......

linux 启动时“smartd”总是失败?

smartd是一个守护进程(一个帮助程序),它能监视拥有自我监视,分析和汇报技术(Self-Monitoring,
Analysis, and Reporting Technology - SMART)的硬盘。
SMART系统使得硬盘能监视并汇报自己的运行状况。它的一个重要特性是能够预测失败,使得系统管理员
能避免数据丢失。
smartd由kernel-utils包缺省安装。用命令 r ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号