patches for Sun Forte 7/8 compilers

Stefan Teleman steleman at nyc.rr.com
Mon Nov 3 20:48:47 GMT 2003


About signal/sigaction: i don't know if it is possible to do |= 
SA_RESTART or |= SA_INTERRUPT in signal() -- this could very well be 
just my lack of knowledge -- but i don't think one can. afaik these 
are purely SVR4 things, and on SunOS they are very necessary -- 
before i installed these, the kio subsystem would dump core 
unexplainably for no apparent reason. these core dumps magically went 
away when i used SA_RESTART. also, forte sometimes complains about 
using ::signal() and non "extern C" linkage of signal handlers. i 
think this is a forte quirk, it's just being very picky.

the problem with setting FD_SETSIZE in "config.h" is that "config.h" 
is not always the first file being #includ'ed. :-) and if FD_SETSIZE 
is not reset before any #include's, it will not do its trick. 
basically FD_SETSIZE has to be reset before any references to 
anything which touches the standard C library.

i was very hesitant to put these things in any internal headers. i 
figured that would make things so much more difficult to track down. 
i tried to do it in a way that is very obvious and easy to find.

i very much agree that this is not the most elegant way of doing 
things by any means. but i have only started working on kde proper 
since end of december 2002. most of these patches were put in between 
january and april, and most of them were put in while i was tracking 
down/finding things as they happened. it's not very well organized at 
all.

--Stefan

-----

On Monday 03 November 2003 15:22, Michael Matz wrote:
> Hi,
>
> I have not looked at the patches, but some comments to your
> explanations:
>
> On Mon, 3 Nov 2003, Stefan Teleman wrote:
> > to unset and reset FD_SETSIZE explicitly, and this has be done
> > explicitly in a translation unit, before including any header
> > files.
>
> Then do it globally in config.h, #ifdef'ed to solaris.  OTOH ...
>
> > even possible before SunOS 5.8. So, that's the reason for it. If
> > they are not necessary everywhere, they can be removed from where
> > they are not useful, but i thought only 256 fd's per process is
> > much too low.
>
> ... there are very few processes which actually need more that
> about 20 fd's.
>
> > About KSignal: on SunOS the ::signal(3C) interface is a wrapper
> > around the sigaction(2) interface. They very stronly recommend
> > that all signal-related interfaces be migrated to the
> > SVR4-compliant sigaction
>
> Have you seen any actual bugs in the signal() implementation, or
> did you really just do this because of the recommendation? 
> signal() is a wrapper around sigaction() nowadays nearly
> everywhere, where the latter is available, and signal() is
> deprecated indeed, but will be around for the next, uhm, 10 years
> at least ;-)  So removing it just so it's not used is not necessary
> right now.  Alternatively we simply should use sigaction()
> unconditionally.
>
>
> Ciao,
> Michael.

-- 
Stefan Teleman          'Nobody Expects the Spanish Inquisition'
steleman at nyc.rr.com                          -Monty Python





More information about the kde-core-devel mailing list