cli()/sti() clarification

irfan_hamid@softhome.net
Thu, 18 Jul 2002 00:27:40 -0600


Hi,

I added two system calls, blockintr() and unblockintr() to give cli()/sti()
control to userland programs (yes I know its not advisable) but I only want
to do it as a test. My test program looks like this:

blockintr();
/* Some long calculations */
unblockintr();

The problem is that if I press Ctrl+C during the calculation, the program
terminates. So I checked the _syscallN() and __syscall_return() macros to
see if they explicitly call sti() before returning to userspace, but they
dont.

Reading the lkml archives, I found that cli() disables only the interrupts,
exceptions are allowed, so it makes sense that the SIGINT was delivered, but
if thats the case, then how come the SIGINT was delivered from the Ctrl+C?
Doesnt this mean that the SIGINT signal was generated as a result of the
keyboard interrupt?

I know I am missing something here, would appreciate if someone could point
me in the right direction.

Regards,
Irfan Hamid.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/