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

📄 exception.cpp

📁 Jazmyn is a 32-bit, protected mode, multitasking OS which runs on i386 & above CPU`s. Its complete
💻 CPP
字号:
/*
 * Copyright (C) 2004, Thejesh AP. All rights reserved.
 */

#include <sys\types.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <dirent.h>
#include <jazmyn\exceptions.h>
#include <drivers\console.h>
#include <drivers\keyboard.h>
#include <jazmyn\desc.h>
#include <mm\heap.h>
#include <mm\memory.h>
#include <fs\file_sys.h>
#include <jazmyn\process.h>
#include <jazmyn\i386.h>
#include <jazmyn\gdt.h>

extern process *curr_proc;
extern GDT _gdt;

void (*exception[17])() = {
        divide_error,
        single_step,
        NMI_error,
        break_point,
        overflow,
        bound_error,
        invalid_opcode,
        no_coprocessor,
        double_fault,
        coprocessor_overflow,
        invalid_TSS,
        no_segment,
        stack_exception,
        general_protection,
        page_fault,
        unknown_error,
        coprocessor_error
};

void divide_error()
{
        cout<<"Divide error"; 
}

void single_step()
{
        cout<<"Single step";        
}

void NMI_error()
{
        cout<<"NMI error";
}

void break_point()
{
        cout<<"Break point";
}

void overflow()
{
        cout<<"Overflow error";
}

void bound_error()
{
        cout<<"Bound error";
}

void invalid_opcode()
{
        cout<<"Invalid opcode";
}

void no_coprocessor()
{
        cout<<"No coprocessor";
}

void double_fault()
{
       cout<<"Double fault";
}

void coprocessor_overflow()
{
        cout<<"Coprocessor overflow";
}

void invalid_TSS()
{
        cout<<"Invalid TSS";
}

void no_segment()
{
        cout<<"Segment not present";
}

void stack_exception()
{
        cout<<"Stack exception";
}

void general_protection()
{
       cout<<"General protection fault";
       curr_proc->_m.show_tss();
       cout<<"TR :"<<STR()<<endl;
       cout<<"ldt:"<<SLDT()<<endl;
       curr_proc->_m.show_ldt();
              
       while(1);
}

void page_fault()
{
        cout<<"Page fault";
}

void unknown_error()
{
       cout<<"Unknown error";
}

void coprocessor_error()
{
        cout<<"Coprocessor error";
}

⌨️ 快捷键说明

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