Given what he wants here, i.e.
"In this case, we simply want any thread that was sleeping to go back to
sleep when the app runs again."
is there a call that can be made to deliver the signal (like do_signal()
but without all the regs and stuff? Then he could test if it is a
SIGSTOP & PTRACE, deliver the signal and go back to sleep.
George
Jonathan Edwards wrote:
>
> Alan Cox wrote:
> >
> > > But we *don't* want to avoid interference from signals. We want to
> > > allow signals but we don't want to have to return from the driver if the
> > > signal in question is SIGSTOP...
> >
> > Can you explain the reasoning here ?
> >
> > Alan
>
> In the absence of a complete redesign of the driver, a single ioctl is
> going
> to result in several transfers between the host and the device, with the
> device "driving" things - the host is going to transfer data when the
> device requests it to do so and is going to spend most of its time
> sitting
> around waiting for the device to ask it to transfer something.
>
> Normally, the receipt of a signal will cause the driver to abort the
> ioctl
> (and interact with the device to clean up properly).
>
> We need to be able to debug a multithreaded app that spends a lot of its
> time
> conversing with the device (or at least holding a channel to the device
> open).
> When an event occurs in one thread, gdb (via ptrace) is going to send a
> SIGSTOP to the "other" threads to quiesce the app. In this case, we
> simply
> want any thread that was sleeping to go back to sleep when the app runs
> again.
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo _at_ vger.redhat.com
> Please read the FAQ at http://www.tux.org/lkml/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo _at_ vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/