10 2013 档案

摘要:LINUX中断描述符初始化@CopyLeft by ICANTH,I Can do ANy THing that I CAN THink!~Author:WenHui,WuHan University,2012-6-4硬件产生中断之后,需要通过门描述符来寻找中断的处理程序入口。门描述符和段描述符一样,8个字节。门描述符大体分为:段偏移、段选择子以及DPL。段选择子用于在GDT中寻找到门段基址,DPL用于控制当前进程中断或异常访问权限。当发生中断时,将门描述符所指向的段基地放入%cs,将段偏移放入%eip,转入相应服务。门描述符结构如下:任务门描述符:用于在发生中断时调度相应进程中断门描述符:描 阅读全文
posted @ 2013-10-20 11:44 jeremyatchina 阅读(583) 评论(0) 推荐(0)
摘要:$cat /proc/cpuinfo查看flags 欄位中是否有 lm (long mode) 阅读全文
posted @ 2013-10-19 22:51 jeremyatchina 阅读(171) 评论(0) 推荐(0)
摘要:Linux.中断处理.入口x86平台entry_32.SLinux.中断处理.入口x86平台entry_32.S在保护模式下处理器是通过中断号和IDTR找到中断处理程序的入口地址的。IDTR存的是一个32位的IDT起始地址和一个16位的IDT长度,理论上IDTR和GDTR一样都能支持8192个中断门(65536字节),但x86只能支持256个中断,所以实际上IDTR的最大有效限长只是2048字节。在这256个中断中,前0×20个中断号被处理器保留用作陷阱(Trap)、故障(Fault)和终止(Abort)。而第0×80号中断号则被Linux用来提供作为用户层程序陷入内核的系 阅读全文
posted @ 2013-10-18 15:29 jeremyatchina 阅读(1590) 评论(0) 推荐(0)
摘要:中断处理函数数组interrupt[]初始化2011-05-13 15:51:40分类:LINUX在系统初始化期间,trap_init()函数将对中断描述符表IDT进行第二次初始化(第一次只是建一张IDT表,让其指向ignore_intr函数),而在这次初始化期间,系统的0~19号中断(用于分NMI和异常的中断向量)均被设置好。与此同时,用于系统调用的0x80号向量也已被设置。然而,对于外部中断的初始化 却没有在这个函数中进行。而是在函数init_IRQ中。仔细想一想内核这样做,的确是使代码清晰又有条理。1)trap_init -----> 内部中断异常和NMI(中断向量号:0~19)2 阅读全文
posted @ 2013-10-18 14:36 jeremyatchina 阅读(628) 评论(0) 推荐(0)
摘要:Linux汇编语法简介(GNU GAS)声明:本教程不是介绍汇编语言和CPU指令的书籍,只是对gas的用法做一简单介绍。市面上所有讲汇编的书都是在微软的环境下,使用的是Intel的语法格式,因此,本教程的目的是想给在Linux下学习汇编的初级用户提供一些帮助。(详细请参阅 GNU GAS 手册)本人也是初学者,在以后的不断学习中,此教程也会慢慢修改,使得更加完善,希望阅读者给予宝贵意见。谢谢!一、 通用语法指令格式: 操作码 源操作数, 目的操作数(在有两个操作数的情况下)。常量表示: 在常量前加上$,例:$1$的另一种用法:用于符号时,表示的是一个首地址。例:string:.ascii &q 阅读全文
posted @ 2013-10-18 14:05 jeremyatchina 阅读(685) 评论(0) 推荐(0)
摘要:[转]修复ubutnu12.04+win7的grub2引导原文位置:http://wenku.baidu.com/view/b6b7c9926bec0975f465e2f8.htmlps:我使用的是ubuntu12.04+win7操作系统,但是在重装win7后,ubuntu已经被隐藏了。因此需修复grub2。依据原文进行修改。使用liveCD,进入tryubuntu,然后等待系统初始完成。打开虚拟终端,输入如下内容:#sudo-i#fdisk-l可在此处找到到一个linux的分区,如果你不清楚自己的ubuntu安装在哪个分区位置,这个就可以看到。#mount/dev/sda7/mnt我的ubu 阅读全文
posted @ 2013-10-17 16:44 jeremyatchina 阅读(191) 评论(0) 推荐(0)
摘要:前提:已裝好Fedora 6 core 2.6.18 ,在Fedora 6 中compile linux kernel。1.下載 Fedora 6 core 2.6.18 http://www.kernel.org/ ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz22.解壓縮linux-2.6.18.tar.bz2 ,進入解壓縮的目錄make cleancp /usr/src/kernels/2.6.18-1.2798.fc6-i586/.config .make oldconfigmake -j4 ... 阅读全文
posted @ 2013-10-17 12:08 jeremyatchina 阅读(275) 评论(0) 推荐(0)
摘要:初探linux中断系统(2)中断系统初始化的过程用来初始化中断系统的函数位于arch/x86/kernel/irqinit.c,定义如下void __init init_IRQ(void){ int i; /* * On cpu 0, Assign IRQ0_VECTOR..IRQ15_VECTOR's to IRQ 0..15. * If these IRQ's are handled by legacy interrupt-controllers like PIC, * then this configuration will likely be sta... 阅读全文
posted @ 2013-10-17 10:20 jeremyatchina 阅读(395) 评论(0) 推荐(0)
摘要:1. 重要接口LDD上说,“内核维护了一个中断信号线的注册表,该注册表类似于I/O端口的注册表。模块在使用中断前要先请求一个中断通道(或者中断请求IRQ),然后在使用后释放该通道。”撇开系统如何遍历各个设备进行初始化,上面两句话说的实际上就是指两个接口函数:externint __must_check request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, constchar*name, void*dev); externvoid free_irq(unsigned int, void*);顾名思义,以 阅读全文
posted @ 2013-10-17 10:19 jeremyatchina 阅读(415) 评论(0) 推荐(0)
摘要:Regular expression 被實作於各種語言中,可以用來對字串做比對 擷取 分隔 這幾類的處理。以下是 JavaScript的處理範例。各位看官,可以按F12開啟 brower 的development tool 的console line 試試。/\d{4}-\d{2}-\d{2}/.test('2007-01-25'); // true'2007-01-25'.match(/\d{4}-\d{2}-\d{2}/); // truevar datePart = '2007-01-25'.match(/(\d{4})-(\d{2})-( 阅读全文
posted @ 2013-10-14 19:42 jeremyatchina 阅读(266) 评论(0) 推荐(0)
摘要:IDT表的初始化linux内核的中断描述符表IDT是一个全局的数据,在i386平台上被定义为:struct desc_struct idt_table[256] __attribute__((__section__(".data.idt"))) = { {0, 0}, };(摘自arch/kernel/i386/traps.c)其中每一个表项均是一个desc_struct结构,该结构被定以为:struct desc_struct {unsigned long a,b;};(摘自/inlcude/asm-i386/processor.h)。可以看出IDT表共256个表项,每一 阅读全文
posted @ 2013-10-14 17:11 jeremyatchina 阅读(867) 评论(0) 推荐(0)
摘要:要使用中断肯定得初始化,这些初始化在系统启动时已经为你做好了,但是我们还是来看看怎样初始化的,这样就能更好的理解中断机制了。先看下面函数:355void__init init_ISA_irqs(void)356{357inti;358//省略了一些代码362 init_8259A(0);363364for(i=0;ichip=chip;}函数__set_irq_handler()定义如下(kernel/irq/chip.c):void__set_irq_handler(unsignedintirq,irq_flow_handler_t handle,intis_chained,constcha 阅读全文
posted @ 2013-10-14 17:01 jeremyatchina 阅读(704) 评论(0) 推荐(0)
摘要:Address operand syntaxThere are up to 4 parameters of an address operand that are presented in the syntaxdisplacement(base register, offset register, scalar multiplier). This is equivalent to[base register + displacement + offset register * scalar multiplier]in Intel syntax. Either or both of the nu 阅读全文
posted @ 2013-10-06 17:37 jeremyatchina 阅读(285) 评论(1) 推荐(0)
摘要:紀錄 Terminal 下指令的過程http://asciinema.org/ 阅读全文
posted @ 2013-10-05 12:22 jeremyatchina 阅读(205) 评论(0) 推荐(0)