Pull request below for non-"git am" users... I tried my best to add many comments throughout the code. I realize this is a lot of new code; and not a typical or common usage of kqueue or epoll. The kqueue code ended up being very complicated to support corner cases (see comments in iom_kqueue); so perhaps the epoll implementation should be easiest-to-understand. I suggest understanding data struct