39 struct sigaction Foam::timer::oldAction_;
41 unsigned int Foam::timer::oldTimeOut_ = 0;
45 void Foam::timer::signalHandler(int)
49 Info<<
"Foam::timer::signalHandler(int sig) : "
50 <<
" timed out. Jumping."
62 newTimeOut_(newTimeOut)
72 "Foam::timer::timer(const unsigned int)"
73 ) <<
"timer already used."
80 struct sigaction newAction;
81 newAction.sa_handler = timer::signalHandler;
82 newAction.sa_flags = SA_NODEFER;
83 sigemptyset(&newAction.sa_mask);
85 if (sigaction(SIGALRM, &newAction, &oldAction_) < 0)
89 "Foam::timer::timer(const unsigned int)"
90 ) <<
"sigaction(SIGALRM) error"
94 oldTimeOut_ = ::alarm(newTimeOut);
98 Info<<
"Foam::timer::timer(const unsigned int) : "
101 <<
" (overriding old timeout " << int(oldTimeOut_)
116 Info<<
"Foam::timer::~timer(const unsigned int) : timeOut="
118 <<
" : resetting timeOut to " << int(oldTimeOut_) <<
endl;
122 ::alarm(oldTimeOut_);
126 if (sigaction(SIGALRM, &oldAction_, NULL) < 0)
130 "Foam::timer::~timer(const struct sigaction&"
131 "const struct sigaction&)"
132 ) <<
"sigaction(SIGALRM) error"