X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FScheduler.cc;h=f40bf69803814562e0ff9b42786609c789859e7a;hb=556aea04a82b3e2e5cdfe28a0abd3b275c7decf9;hp=3203d205e7f7d399ec67dc275a57575ea99bf291;hpb=8057a9e389e33771aad9c78538f76d0e82ad7adb;p=senf.git diff --git a/Scheduler/Scheduler.cc b/Scheduler/Scheduler.cc index 3203d20..f40bf69 100644 --- a/Scheduler/Scheduler.cc +++ b/Scheduler/Scheduler.cc @@ -132,6 +132,33 @@ prefix_ senf::log::time_type senf::scheduler::LogTimeSource::operator()() return eventTime(); } +/////////////////////////////////////////////////////////////////////////// +// senf::scheduler::BlockSignals + +prefix_ senf::scheduler::BlockSignals::BlockSignals(bool initiallyBlocked) + : blocked_ (false) +{ + ::sigfillset(&allSigs_); + if (initiallyBlocked) + block(); +} + +prefix_ void senf::scheduler::BlockSignals::block() +{ + if (blocked_) + return; + ::sigprocmask(SIG_BLOCK, &allSigs_, &savedSigs_); + blocked_ = true; +} + +prefix_ void senf::scheduler::BlockSignals::unblock() +{ + if (!blocked_) + return; + ::sigprocmask(SIG_SETMASK, &savedSigs_, 0); + blocked_ = false; +} + ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_