Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C > Re: Installing ...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 9 of 17 Topic 26124 of 26977
Post > Topic >>

Re: Installing a C function into the IDT

by jt@[EMAIL PROTECTED] (Jens Thoms Toerring) May 8, 2008 at 10:14 PM

The Prisoner <nospam@[EMAIL PROTECTED]
> wrote:
> I was reading about interrupts, and I got to thinking it would be a real

> neat thing to use interrupts for program-wide exception handling. What I

> haven't been able to find is a clear guide or example program for how to

> install a C function into the IDT.

This is completely system dependent (assuming a system has an
"IDT" at all and the operating system lets you get at something
that low level which many probably won't, even if you have root
or admistrator privileges). And what about a multi-tasking
system? Just think about the situation that you would get in
if each programs would mess around with the IDT. I guess the
only system this could somehow be made to work would be DOS.
If that's you're system you probably better ask in a group
that specializes on system specific programming under DOS.

>And what happens about passing arguments?

You can't pass arguments to interrupt handler functions since
they don't get called in the traditional sense, there's no-
thing that could pass it arguments.

> I'd like to have something like this:

> void malloc_failure();

> Say I install this as interrupt slot 42, then I can do:

> if(!(p=(int*)malloc(1000*4))) // array of 1000 ints
>    __asm__ ("int $0x42");

> Is there any reason for this not to work?

You may or may not get something to work on the architecture
and OS you're currently using (but since you don't tell it's
impossible to say) but if you want your program also to run
under a different OS or even on a machine with a different
architecture you will be in for a rather nasty surprise.

Moreover "__asm__" is no standard C function. C99 has "asm",
but if you use that you throw out all hopes of ****tability.

Moreover, you shouldn't cast the return value of malloc().
iIt just keeps the compiler form warning you if you forgot
to include <stdlib.h> and thus a prototype for malloc() is
missing, which can result in very "interesting" bugs. And
you also shouldn't assume that an int always has 4 bytes,
while that may be the case on your system it's nothing you
can rely on.

Why don't you look for something more ****table? E.g. do a
search on "exceptions in c" and look up the longjmp() and
setjmp() functions. It's possible to simulate some kind of
exception handling in a (more or less) standard C confor-
ming way - at least a lot more ****table then with using
interrupts.
                            Regards, Jens
-- 
  \   Jens Thoms Toerring  ___      jt@[EMAIL PROTECTED]
   \__________________________      http://toerring.de
 




 17 Posts in Topic:
Installing a C function into the IDT
The Prisoner <nospam@[  2008-05-08 21:47:34 
Re: Installing a C function into the IDT
jacob navia <jacob@[EM  2008-05-08 23:00:44 
Re: Installing a C function into the IDT
The Prisoner <nospam@[  2008-05-08 22:34:27 
Re: Installing a C function into the IDT
Ian Collins <ian-news@  2008-05-09 09:42:17 
Re: Installing a C function into the IDT
Keith Thompson <kst-u@  2008-05-08 15:17:31 
Re: Installing a C function into the IDT
Keith Thompson <kst-u@  2008-05-08 15:31:59 
Re: Installing a C function into the IDT
Ian Collins <ian-news@  2008-05-09 10:46:21 
Re: Installing a C function into the IDT
Erik Trulsson <ertr101  2008-05-08 23:58:43 
Re: Installing a C function into the IDT
jt@[EMAIL PROTECTED] (Je  2008-05-08 22:14:45 
Re: Installing a C function into the IDT
Keith Thompson <kst-u@  2008-05-08 15:23:50 
Re: Installing a C function into the IDT
The Prisoner <nospam@[  2008-05-08 23:29:32 
Re: Installing a C function into the IDT
Ian Collins <ian-news@  2008-05-09 10:51:44 
Re: Installing a C function into the IDT
jt@[EMAIL PROTECTED] (Je  2008-05-08 23:17:28 
Re: Installing a C function into the IDT
"cr88192" <c  2008-05-09 16:33:26 
Re: Installing a C function into the IDT
Antoninus Twink <nospa  2008-05-09 14:58:07 
Re: Installing a C function into the IDT
Ben Bacarisse <ben.use  2008-05-09 00:46:39 
Re: Installing a C function into the IDT
Owen Jacobson <angryba  2008-05-08 22:01:14 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Jul 26 3:54:06 CDT 2008.