guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 02/13] script language API for GDB: extension.[ch]


From: Ludovic Courtès
Subject: Re: [PATCH v2 02/13] script language API for GDB: extension.[ch]
Date: Tue, 07 Jan 2014 14:10:38 +0100
User-agent: Gnus/5.130007 (Ma Gnus v0.7) Emacs/24.3 (gnu/linux)

Tom Tromey <address@hidden> skribis:

>>>>>> "Ludovic" == Ludovic Courtès <address@hidden> writes:
>
> Ludovic> I’m not sure I understand the problem.
>
> Ludovic> What are extension languages typically expected to do when the ‘quit’
> Ludovic> flag is set?
>
> The basic idea is that if some extension code is running, then C-c ought
> to interrupt that code in the way expected by programmers writing code
> in that language.
>
> Python provides a kind of low-level API to its equivalent of Guile's
> SCM_TICK and async stuff.  So the approach we took in gdb was to unify
> gdb's implementation with Python's, when Python is enabled.  This
> ensures that a SIGINT delivery is handled a single time -- by Python if
> Python code is running, and by gdb if gdb code is running.

So do I get it right that it’s GDB that does signal(SIGINT, ...), and
its handler just calls PyOS_InterruptOccurred (or so) if Python code
happens to be running?

> One approach for multiple extension languages might be to notice when
> switching languages and move the bit.  However I didn't see any way to
> do this in the Guile API.  In Python it can be accomplished with
> PyErr_SetInterrupt and PyOS_InterruptOccurred.

Would it work, upon SIGINT, to do something like:

  (system-async-mark (lambda ()
                       (throw 'system-error ... EINTR)))

That would eventually raise an exception in Scheme code.

Ludo’.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]