Hi Hermann-Josef,
I guess that with grepping you found also:
TTimer::SetInterruptSyscalls()
TUnixSystem::SigAlarmInterruptsSyscalls()
which allow you to use the ROOT signal handler and interrupt syscalls
using a a-sync timer.
Cheers, Fons.
On Tue, 2004-07-13 at 12:02, Mathes, Hermann-Josef wrote:
>
>
> Dear Rooters,
>
>
>
> well, it seems you can forget my question. I grep’ed a bit more
> around…
>
>
>
> SA_RESTART flag set on struct sigaction should solve the problem and I
> commented that definitely out in my call to sigaction() …
>
> And in TUnixSystem::UnixSignal() it is done !
>
>
>
> Sorry for bothering everybody here.
>
>
>
> Cheers
>
> Hermann-Josef
>
>
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: owner-roottalk@pcroot.cern.ch
> [mailto:owner-roottalk@pcroot.cern.ch] Im Auftrag von Mathes,
> Hermann-Josef
> Gesendet: Dienstag, 13. Juli 2004 09:49
> An: roottalk@cern.ch
> Betreff: [ROOT] EINTR handled in TSocket ?
>
>
>
>
>
> Dear Rooters,
>
>
>
> I am in doubt that EINTR is handled properly in the TSocket class.
> There was a message from Fons a long time ago concerning this subject
> (http://root.cern.ch/cgi-bin/print_hit_bold.pl/root/roottalk/roottalk01/2317.html), but I could not find it in the code (TUnixSystem::UnixSend(), TUnixSystem::SendRaw(), TSocket::Send() and TSocket::SendRaw()).
>
>
>
> I have checked it in the sources of 3.00, 3.02, 3.05/07 (the version
> our project uses) and the CVS HEAD version.
>
>
>
> This is my code fragment and I am using the alarm() function to send
> periodically signals to my application:
>
> cout << "Sending event # " << header->GetEventNo() << endl;
>
>
>
> mess.Reset();
>
> mess.SetWhat( kMESS_OBJECT );
>
>
>
> mess.WriteObject( event );
>
>
>
> length = socket->Send( mess );
>
>
>
> if ( length <= 0 ) {
>
> cerr << "TSocket::Send() - length= " << length << endl;
>
> cerr << "TSystem::GetErrno()= " << gSystem->GetErrno() <<
> endl;
>
> }
>
>
>
> This is the printout when the SIGALARM happens during/near the socket
> transaction:
>
>
>
> Sending event # 11941
>
> SigAlarmHandler() was called at 1089647658 !
>
> SigAlarmHandler() was called at 1089647659 !
>
> TSocket::Send() - length= -1
>
> TSystem::GetErrno()= 4
>
>
>
> I am overwriting the ROOT signal handler for SIGALARM through
> sigaction().
>
>
>
> Could you please comment on it or help me to open my eyes … ? If it is
> not handled what is your suggestion ?
>
>
>
> Thanks for any help, suggestions etc.
>
> Regards
>
> Hermann-Josef
>
>
>
>
> **************************************************************************
>
> * Visit my new homepage !!! new look & feel !!! new information
> !!! *
>
> *
> http://www-ik.fzk.de/~mathes/Welcome.htm
> *
>
> **************************************************************************
>
> * *
>
> * Dr. Hermann-Josef Mathes
> *
>
> * KASCADE & AUGER
> Collaboration *
>
> * Forschungszentrum Karlsruhe Phone: +49 7247
> 822429 *
>
> * Institut für Kernphysik FAX: +49 7247
> 824075 *
>
> * POB
> 3640 *
>
> * D-76021 Karlsruhe/Germany Mail:
> Hermann-josef.mathes@ik.fzk.de *
>
> * *
>
> **************************************************************************
>
>
--
Org: CERN, European Laboratory for Particle Physics.
Mail: 1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248
WWW: http://www.rademakers.org/fons/ Fax: +41 22 7679480
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET