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

linux 0.11 内核学习 asm.s,机器难免出故障。


/*
 *  linux/kernel/asm.s
 *
 *  (C) 1991  Linus Torvalds
 */
/*
 * asm.s contains the low-level code for most hardware faults.
 * page_exception is handled by the mm, so that isn't here. This
 * file also handles (hopefully) fpu-exceptions due to TS-bit, as
 * the fpu must be properly saved/resored. This hasn't been tested.
 */
/*
 * asm.asm处理的主要是和硬件相关的故障。注意的是页异常是有mm模块
 * 来实现管理的,所以在这里不需要处理。此外此程序来处理fpu的异常。
 *
 */
/*
 * 全局函数的定义,主要是引用的是traps.c文件中的函数声明。
 * 下面的代码主要是对intel的保留中断int0 -- int16的处理。
 */
.globl _divide_error,_debug,_nmi,_int3,_overflow,_bounds,_invalid_op
.globl _double_fault,_coprocessor_segment_overrun
.globl _invalid_TSS,_segment_not_present,_stack_segment
.globl _general_protection,_coprocessor_error,_irq13,_reserved
# 一下的中断都是Intel得保留中断的处理程序。
#------------------------------------------------------------------------
# int0 -- 被0除所引发的中断。下面的$_do_divide_error是c函数编译之后
# 对应的模块的名称。
_divide_error:
pushl $_do_divide_error # 首先将函数入口地址压入堆栈。
no_error_code: # 标号相当于函数被下面程序调用。
xchgl %eax,(%esp) # xchgl指令的作用是交换寄存器。
# 在此的含义是将函数的地址存在
# eax中,将eax原来内容入栈。
pushl %ebx # 寄存器入栈
pushl %ecx
pushl %edx
pushl %edi
pushl %esi
pushl %ebp
push %ds
push %es
push %fs
####################################################
# 将出错码和中断返回地址入栈作为函数调用_do_divide_error
# 的参数。
pushl $0 # "error code",出错码0入栈

lea 44(%esp),%edx # 取得中断返回地址
pushl %edx # 中断返回地址入栈
#####################################################
# 下面的代码重新设置寄存器。ds和es指向的是内核代码段
# fs指向的是用户数据段。
movl $0x10,%edx
mov %dx,%ds
mov %dx,%es
mov %dx,%fs


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

实战Linux Bluetooth编程 (七) SDP协议

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

linux实用命令收集

进程篇
查看某进程端口号
netstat -anp | grep 80
lsof -i :port
例:  注意":"后,紧跟端口号,没有空格
#lsof -i :443
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
java    2731 root   35u  IPv6   7778       TCP *:https (LI ......

Redhat linux 中VMware Tools 的安装

     每次装系统少不了要安装VMware Tools,现列出安装步骤,就当做个笔记吧:)
mount /dev/cdrom  /mnt/cdrom
cd /mnt/cdrom
ls
cd /tmp
rpm -Uhv /mnt/cdrom/VMwareTools--xxxxxxxxx.rpm
vmware-config-tools.pl
就ok了。 ......

Linux下ulimit 命令

ulimit主要查看linux系统下对系资源分配的限制情况,查看全部使用ulimit -a (all)
ulimit 参数说明
选项 [options]  含义  例子 
-H  设置硬资源限制,一旦设置不能增加。  ulimit – Hs 64;限制硬资源,线程栈大小为 64K。 
-S  设置软资源限制,设置后可以增加,但是不能 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号