X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FScheduler.cc;h=fbc917d971843920f9bb8724d3907e865d074266;hb=d0006132bfcb3ab442cf66b600ed3fad36f1ac2c;hp=3047ab4fb5e62de0bba9543ca6aae54db250e250;hpb=f4e0d3d4a32cc0bfc37855ad7f2c1e829911d233;p=senf.git diff --git a/Scheduler/Scheduler.cc b/Scheduler/Scheduler.cc index 3047ab4..fbc917d 100644 --- a/Scheduler/Scheduler.cc +++ b/Scheduler/Scheduler.cc @@ -62,10 +62,12 @@ // You should use sigaction to register the signal handlers and define // a sa_mask so all Scheduler-registered signals are automatically // *blocked* whenever one of the signals is called (including the -// called signal!). This ensures, that no two signals can be delivered -// on top of each other. And of course any signal registered with the -// scheduler must be blocked as soon as it is registered with the -// scheduler. +// called signal!) (This also means, we will have to re-register all +// signals if we change the registration of some signal since the +// sa_mask changes). This ensures, that no two signals can be +// delivered on top of each other. And of course any signal registered +// with the scheduler must be blocked as soon as it is registered with +// the scheduler. // Definition of non-inline non-template functions @@ -209,6 +211,10 @@ prefix_ void senf::Scheduler::process() if (spec.cb_hup) spec.cb_hup(EV_HUP); else if (ev.events & EPOLLERR) { + /// \fixme This is stupid, if cb_write and cb_read are + /// the same. The same below. We really have to + /// exactly define sane semantics of what to do on + /// EPOLLHUP and EPOLLERR. if (spec.cb_write) spec.cb_write(EV_HUP); if (spec.cb_read) spec.cb_read(EV_HUP); }