From: Dr. Michael Weller (eowmob@exp-math.uni-essen.de)
Date: Wed 22 Jul 1998 - 15:42:54 IDT
On Wed, 22 Jul 1998, Elias Jarlebring wrote:
> I have not managed to get svgalib to work with pthread (core dump :(...
> no shutdown routine is ran). Is this an unknown bug or just something no
> one has done anything about?
>
> /Elias Jarlebring
Well, I don't really know. As svgalib uses mmap'ed memory and direct I/O
it will be a general problem to access svgalib from different threads (if
the I/O priviledges and mmap'ed areas are not shared on automatic). This
is basically a requirement to the thread implementation (share any I/O
priviledges and mmap's). It is important too, that different threads don't
have different ideas in which state the VGA currently is.
Even when your program does all svgalib access in a single thread (which I
consider mandatory), I heard once that there is a problem with the signals
SIGUSR1 and 2 used for VC switches which are used by the threads too.
Now, of course, with a few #define's the signals svgalib actually uses can
be modified. But then some other application will fail, as the other
signals already have meanings.. (this is why SIGUSR1 & 2 are used right
now). So, there is no real general solution.
BTW, the readme already mentions the thread/svgalib problematic.
Michael.
>
> System:
> SVGAlib 1.2.13
> S3 ViRGe
> pthread 0.5
>
> Sample program:
> #include <pthread.h>
> .
> .
> .
> void threadFunc()
> {
> while(1);
> }
> void main()
> {
> pthread_t t;
> pthread_attr_t attr;
> // set attr for thread
> pthread_attr_init(&attr);
> pthread_attr_setscope(&attr,PTHREAD_SCOPE_SYSTEM);
>
> // init vga here
>
> // start thread
> pthread_create(&t,&attr,((void *)threadFund),(void *)NULL)
>
> while(1);
>
> }
>
--
Michael Weller: eowmob@exp-math.uni-essen.de, eowmob@ms.exp-math.uni-essen.de,
or even mat42b@spi.power.uni-essen.de. If you encounter an eowmob account on
any machine in the net, it's very likely it's me.
This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:22 IST