⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pic.cc.svn-base

📁 德国Erlangen大学教学操作系统源码。
💻 SVN-BASE
字号:
/*****************************************************************************//* Betriebssysteme I, Uni-Magdeburg, SS 98, OO-Stubs                         *//*---------------------------------------------------------------------------*//*                                                                           *//*                                  P I C                                    *//*                                                                           *//*---------------------------------------------------------------------------*//* Programmable Interrupt Controller.                                        *//* Mit Hilfe des PICs koennen Hardware-Unterbrechungen einzeln zugelassen    *//* oder unterdrueckt werden. Auf diese Weise wird also bestimmt, ob die      *//* Unterbrechung eines Geraetes ueberhaupt an den Prozessor weitergegeben    *//* wird. Selbst dann erfolgt eine Aktivierung der Unterbrechungsroutine nur, *//* wenn der Prozessor bereit ist, auf Unterbrechungen zu reagieren. Dies     *//* kann mit Hilfe der Klasse CPU festgelegt werden.                          *//*****************************************************************************/#include "machine/pic.h"#include "machine/io_port.h"extern CPU cpu;PIC::PIC()	: m_pic1_h(PIC::PIC_ports::pic1_h), m_pic1_l(PIC::PIC_ports::pic1_l),	  m_pic2_h(PIC::PIC_ports::pic2_h), m_pic2_l(PIC::PIC_ports::pic2_l){}PIC::PIC(PIC &pic)	: m_pic1_h(PIC::PIC_ports::pic1_h), m_pic1_l(PIC::PIC_ports::pic1_l),	  m_pic2_h(PIC::PIC_ports::pic2_h), m_pic2_l(PIC::PIC_ports::pic2_l){}PIC::~PIC(){}void PIC::allow (int interrupt_device){	mask( mask() & ~( 1 << (interrupt_device&0x0f)) );}void PIC::forbid (int interrupt_device){	mask( mask() | ( 1 << (interrupt_device&0x0f)) );}void PIC::ack(){	m_pic1_h.outb(0x20);	m_pic2_h.outb(0x20);}int PIC::mask(){	return (m_pic2_l.inb() << 8) | m_pic1_l.inb();}void PIC::mask(int new_mask){	m_pic1_l.outb( new_mask & 0xff );	m_pic2_l.outb( (new_mask >> 8) & 0xff );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -