It was an issue with VT console switching...

Search this archive.

From: ASA (llb@udm.net.ru)
Date: Tue 09 Oct 2001 - 13:07:17 IST


Hello linux-svgalib,

> I use alarm() for a similar thing.  just set up a signal handler that catches
> SIGALRM, redraws the clock, and calls alarm(1) to update the clock once a
> second.  alarm(60) will update it once a minute.
> 
> then, at the beginning of the program, just call alarm(60) once and away
> you go.  if you ever need to turn off the clock update, just do alarm(0).
> 
> pretty simple.

I noticed that SIGALRM can have issues with switching VT consoles,
notable on "slow" machine with a 486 CPU, especially with "very slow"
VESA console framebuffer device (kernel vesafb).

My suggested patch (for 1.9.11) is:

--- vga.c.llborigllb    Tue Jul 31 23:23:11 2001
+++ vga.c       Mon Oct  1 12:22:43 2001
@@ -61,6 +61,7 @@
        sa.sa_handler = fun; \
        sa.sa_flags = SA_RESTART; \
        zero_sa_mask(&(sa.sa_mask)); \
+       sigaddset(&sa.sa_mask,SIGALRM); \
        sigaction(sig, &sa, NULL); \
 }

This  patch fully resolves problem with breaking the image or incorrect
displaying one.

I suggest to make any means in order to have sa.sa_mask user-settable.
This is might be good for complex programs that are relied on own signal
handling.

These means might look like predefined sigset_t variable, avaliable by
public access.

There is a string in the file doc/TODO:
>really reliable vc switching.

What did it mean? I think that the issue described above.

-- 
Best regards,
 ASA                          mailto:llb@udm.net.ru


------------------------------------------------------------------
Unsubscribe:  To:   listbot@svgalib.org
              Body: unsubscribe linux-svgalib


This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:24 IST