methods and datastructures for catching the user CTRL-C interrupt
Definition in file interrupt.c.
#include <assert.h>#include <sys/types.h>#include <stdlib.h>#include <signal.h>#include "scip/def.h"#include "scip/pub_message.h"#include "blockmemshell/memory.h"#include "scip/interrupt.h"Go to the source code of this file.
Data Structures | |
| struct | SCIP_Interrupt |
Functions | |
| static void | interruptHandler (int signumsignum) |
| SCIP_RETCODE | SCIPinterruptCreate (SCIP_INTERRUPT **interrupt) |
| void | SCIPinterruptFree (SCIP_INTERRUPT **interrupt) |
| void | SCIPinterruptCapture (SCIP_INTERRUPT *interrupt) |
| void | SCIPinterruptRelease (SCIP_INTERRUPT *interrupt) |
| SCIP_Bool | SCIPinterrupted (void) |
| SCIP_Bool | SCIPterminated (void) |
| void | SCIPtryTerminate (void) |
| void | SCIPresetInterrupted (void) |
Variables | |
| static volatile int | ninterrupts = 0 |
| static volatile int | nterms = 0 |
|
static |
interrupt handler for CTRL-C interrupts
| signum | interrupt signal number |
Definition at line 72 of file interrupt.c.
References interruptHandler(), ninterrupts, and SCIP_UNUSED.
Referenced by interruptHandler(), and SCIPinterruptCapture().
| SCIP_RETCODE SCIPinterruptCreate | ( | SCIP_INTERRUPT ** | interrupt | ) |
creates a CTRL-C interrupt data
| interrupt | pointer to store the CTRL-C interrupt data |
Definition at line 91 of file interrupt.c.
References assert(), BMSallocMemory, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPinterruptCreate().
Referenced by doScipCreate(), and SCIPinterruptCreate().
| void SCIPinterruptFree | ( | SCIP_INTERRUPT ** | interrupt | ) |
frees a CTRL-C interrupt data
| interrupt | pointer to the CTRL-C interrupt data |
Definition at line 104 of file interrupt.c.
References assert(), BMSfreeMemory, NULL, and SCIPinterruptFree().
Referenced by SCIPfree(), and SCIPinterruptFree().
| void SCIPinterruptCapture | ( | SCIP_INTERRUPT * | interrupt | ) |
captures the CTRL-C interrupt to call the SCIP's own interrupt handler
| interrupt | CTRL-C interrupt data |
Definition at line 114 of file interrupt.c.
References assert(), interruptHandler(), ninterrupts, nterms, NULL, SCIP_Interrupt::nuses, SCIP_Interrupt::oldsigaction, and SCIPinterruptCapture().
Referenced by SCIPinterruptCapture(), SCIPpresolve(), SCIPsolve(), and SCIPsolveConcurrent().
| void SCIPinterruptRelease | ( | SCIP_INTERRUPT * | interrupt | ) |
releases the CTRL-C interrupt and restores the old interrupt handler
| interrupt | CTRL-C interrupt data |
Definition at line 144 of file interrupt.c.
References assert(), NULL, SCIP_Interrupt::nuses, SCIP_Interrupt::oldsigaction, and SCIPinterruptRelease().
Referenced by SCIPinterruptRelease(), SCIPpresolve(), SCIPsolve(), and SCIPsolveConcurrent().
| SCIP_Bool SCIPinterrupted | ( | void | ) |
returns whether the user interrupted by pressing CTRL-C
Definition at line 163 of file interrupt.c.
References ninterrupts, SCIP_Bool, and SCIPinterrupted().
Referenced by SCIPinterrupted(), SCIPpressedCtrlC(), and SCIPsolveIsStopped().
| SCIP_Bool SCIPterminated | ( | void | ) |
returns whether a process termination signal was received
returns whether the process has received a SIGTERM
Definition at line 171 of file interrupt.c.
References nterms, SCIP_Bool, and SCIPterminated().
Referenced by SCIPsolveIsStopped(), and SCIPterminated().
| void SCIPtryTerminate | ( | void | ) |
sends a termination signal to all SCIP processes so that they try to terminate as soon as possible
Definition at line 182 of file interrupt.c.
References nterms, and SCIPtryTerminate().
Referenced by handleSigterm(), and SCIPtryTerminate().
| void SCIPresetInterrupted | ( | void | ) |
resets the number of interrupts to 0
Definition at line 190 of file interrupt.c.
References ninterrupts, nterms, and SCIPresetInterrupted().
Referenced by SCIPresetInterrupted(), and SCIPsolveIsStopped().
|
static |
static variable counting the number of CTRL-C interrupts
Definition at line 45 of file interrupt.c.
Referenced by interruptHandler(), SCIPinterruptCapture(), SCIPinterrupted(), and SCIPresetInterrupted().
|
static |
static variable counting the number of times that the process received a SIGTERM signal
Definition at line 47 of file interrupt.c.
Referenced by SCIPinterruptCapture(), SCIPresetInterrupted(), SCIPterminated(), and SCIPtryTerminate().