If you really want to shoot yourself in your foot, I'd pick bullet B.
Bullet A makes me sea-sick, and bullets C and D, well, let's leave POSIX
APIs being *POSIX* APIs.
Once you remove all the "ifs" and "elses" that resulted from your previous
bullet A multiplexing implementation, timerfd_gettime and timerfd_settime
should result in being pretty slick.
I still think we could have survived w/out all this done inside the
kernel though.
- Davide
-