+#include "sel_thread.h"
+
+struct iochan_man_s {
+ IOCHAN channel_list;
+ sel_thread_t sel_thread;
+ int sel_fd;
+ int no_threads;
+};
+
+iochan_man_t iochan_man_create(int no_threads)
+{
+ iochan_man_t man = xmalloc(sizeof(*man));
+ man->channel_list = 0;
+ man->sel_thread = 0; /* can't create sel_thread yet because we may fork */
+ man->sel_fd = -1;
+ man->no_threads = no_threads;
+ return man;
+}
+
+void iochan_man_destroy(iochan_man_t *mp)
+{
+ if (*mp)
+ {
+ if ((*mp)->sel_thread)
+ sel_thread_destroy((*mp)->sel_thread);
+ xfree(*mp);
+ *mp = 0;
+ }
+}
+
+void iochan_add(iochan_man_t man, IOCHAN chan)
+{
+ chan->man = man;
+ chan->next = man->channel_list;
+ man->channel_list = chan;
+}