Stop waiting for an event if a signal occured.
This commit is contained in:
parent
3ce5de8758
commit
a1bf0f0792
|
@ -28,6 +28,8 @@ static void when_sigpipe_interrupt();
|
||||||
|
|
||||||
/* JMG:*/
|
/* JMG:*/
|
||||||
static void when_scsh_interrupt();
|
static void when_scsh_interrupt();
|
||||||
|
/* JMG: for scsh */
|
||||||
|
static long interrupt_count[32];
|
||||||
|
|
||||||
|
|
||||||
bool s48_setcatcher(int signum, void (*catcher)(int));
|
bool s48_setcatcher(int signum, void (*catcher)(int));
|
||||||
|
@ -562,6 +564,8 @@ s48_wait_for_event(long max_wait, bool is_minutes)
|
||||||
}
|
}
|
||||||
if (keyboard_interrupt_count > 0)
|
if (keyboard_interrupt_count > 0)
|
||||||
status = NO_ERRORS;
|
status = NO_ERRORS;
|
||||||
|
else if (s48_os_signal_happend ())
|
||||||
|
status = NO_ERRORS;
|
||||||
else {
|
else {
|
||||||
status = queue_ready_ports(TRUE, seconds, ticks);
|
status = queue_ready_ports(TRUE, seconds, ticks);
|
||||||
if (there_are_ready_ports())
|
if (there_are_ready_ports())
|
||||||
|
@ -644,8 +648,6 @@ queue_ready_ports(bool wait, long seconds, long ticks)
|
||||||
|
|
||||||
|
|
||||||
/* JMG: for scsh */
|
/* JMG: for scsh */
|
||||||
static long interrupt_count[32];
|
|
||||||
|
|
||||||
static void when_scsh_interrupt(int signo)
|
static void when_scsh_interrupt(int signo)
|
||||||
{
|
{
|
||||||
interrupt_count[sig2int[signo]] +=1;
|
interrupt_count[sig2int[signo]] +=1;
|
||||||
|
@ -691,3 +693,15 @@ s48_os_signal_pending(void) {
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
s48_os_signal_happend(void) {
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < max_sig; i++){
|
||||||
|
if (interrupt_count[i] > 0){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue