… | |
… | |
135 | |
135 | |
136 | tw0.start (TSTAMP_MAX); |
136 | tw0.start (TSTAMP_MAX); |
137 | #endif |
137 | #endif |
138 | } |
138 | } |
139 | |
139 | |
|
|
140 | ~init () |
|
|
141 | { |
|
|
142 | iom_valid = false; |
|
|
143 | } |
|
|
144 | |
140 | static void required (); |
145 | static void required (); |
141 | } init; |
146 | } init; |
142 | |
147 | |
143 | void |
148 | void |
144 | init::required () |
149 | init::required () |
… | |
… | |
214 | write (sigpipe[1], &ch, 1); |
219 | write (sigpipe[1], &ch, 1); |
215 | } |
220 | } |
216 | |
221 | |
217 | void io_manager::reg (sig_watcher &w) |
222 | void io_manager::reg (sig_watcher &w) |
218 | { |
223 | { |
|
|
224 | init::required (); |
|
|
225 | |
219 | assert (0 < w.signum); |
226 | assert (0 < w.signum); |
220 | |
227 | |
221 | sw.reserve (w.signum); |
228 | sw.reserve (w.signum); |
222 | |
229 | |
223 | while (sw.size () < w.signum) // pathetic |
230 | while (sw.size () < w.signum) // pathetic |
… | |
… | |
248 | io_manager::reg (w, *sv); |
255 | io_manager::reg (w, *sv); |
249 | } |
256 | } |
250 | |
257 | |
251 | void io_manager::unreg (sig_watcher &w) |
258 | void io_manager::unreg (sig_watcher &w) |
252 | { |
259 | { |
253 | if (!w.active) |
260 | if (!w.active || !iom_valid) |
254 | return; |
261 | return; |
255 | |
262 | |
256 | assert (0 < w.signum && w.signum <= sw.size ()); |
263 | assert (0 < w.signum && w.signum <= sw.size ()); |
257 | |
264 | |
258 | io_manager::unreg (w, *sw[w.signum - 1]); |
265 | io_manager::unreg (w, *sw[w.signum - 1]); |