signal dequeue ...

From: Davide Libenzi (davidel@xmailserver.org)
Date: Fri Jun 22 2001 - 13:05:07 EST


I'm just trying to figure out the reason why signal must be delivered one at a
time instead of building a frame with multiple calls with only the last one
chaining back to the kernel.
All previous calls instead of calling the stub that jump back to the kernel
will call a small stub like ( Ix86 ) :

stkclean_stub:
        add $frame_size, %esp
        cmp %esp, $end_stubs
        jae $sigreturn_stub
        ret
sigreturn_stub:
        mov __NR_sigreturn, %eax
        int $0x80
end_stubs:

...
| context1
* $stkclean_stub
* sigh1_eip
| context0
* $stkclean_stub
* sigh0_eip

When sigh0 return, it'll call stkclean_stub that will clean context0 and if
we're at the end it'll call the jump-back-to-kernel stub, otherwise the it'll
execute the ret the will call sigh1 handler ... and so on.

- Davide

-
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/



This archive was generated by hypermail 2b29 : Sat Jun 23 2001 - 21:00:39 EST