OS Dev Series: Tutorial 15

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
Post Reply
User avatar
neon
Member
Member
Posts: 1567
Joined: Sun Feb 18, 2007 7:28 pm
Contact:

OS Dev Series: Tutorial 15

Post by neon »

Hey everyone,

Tutorial 15: Errors, Exceptions, Interruptions is up.

It covers a few basic concepts to include:

* Error Handling
* Exception Handling
* IRs, IRQs, ISRs
* Gates: Traps, Interrupts, Tasks
* IDTs and IVTs
* IDTR processor register
* LIDT and SIDT instructions
* FLIHs and SLIHs
* How interrupts work, stack, error codes

It covers loading a gdt using MSVC++'s inline assembler, and a new way of installing irq's directly without the need of a common stub routine.

It also provides a workable interface for the hardware abstraction layer (hal.lib/hal.dll)

Please let me know if there are any errors or problems with the tutorial or demo code. I am planning on adding more content to describe the different types of gates a bit further, and exception error codes. Is there anything else I should add? I don't plan on integrating hardware exceptions until the next tutorial. (The demo has been verified to work fine with hardware exceptions, so it should not be to hard)

Tutorial 15 Direct Link

OS Development Series Direct Link

Thanks in advance for any comments or suggestions!
OS Development Series | Wiki | os | ncc
char c[2]={"\x90\xC3"};int main(){void(*f)()=(void(__cdecl*)(void))(void*)&c;f();}
White-spirit
Member
Member
Posts: 89
Joined: Sun Mar 23, 2008 2:23 pm
Location: [0x8:0x1000]

Post by White-spirit »

Great IDT tutorial, that's what I needed :D
User avatar
01000101
Member
Member
Posts: 1599
Joined: Fri Jun 22, 2007 12:47 pm
Contact:

Post by 01000101 »

awesomeness!
User avatar
zaleschiemilgabriel
Member
Member
Posts: 232
Joined: Mon Feb 04, 2008 3:58 am

Post by zaleschiemilgabriel »

Interruptions? Don't you mean interrupts? :D
User avatar
neon
Member
Member
Posts: 1567
Joined: Sun Feb 18, 2007 7:28 pm
Contact:

Post by neon »

zaleschiemilgabriel wrote:Interruptions? Don't you mean interrupts? :D
Yep--That was a play on words :)
OS Development Series | Wiki | os | ncc
char c[2]={"\x90\xC3"};int main(){void(*f)()=(void(__cdecl*)(void))(void*)&c;f();}
Post Reply