Moved poll handling to the generic part of the server objects.
Fixed busy waiting on POLLERR events.
Merged struct client into struct thread.

diff --git a/server/semaphore.c b/server/semaphore.c
index 36656f4..221d533 100644
--- a/server/semaphore.c
+++ b/server/semaphore.c
@@ -28,17 +28,19 @@
 
 static const struct object_ops semaphore_ops =
 {
-    sizeof(struct semaphore),
-    semaphore_dump,
-    add_queue,
-    remove_queue,
-    semaphore_signaled,
-    semaphore_satisfied,
-    no_read_fd,
-    no_write_fd,
-    no_flush,
-    no_get_file_info,
-    no_destroy
+    sizeof(struct semaphore),      /* size */
+    semaphore_dump,                /* dump */
+    add_queue,                     /* add_queue */
+    remove_queue,                  /* remove_queue */
+    semaphore_signaled,            /* signaled */
+    semaphore_satisfied,           /* satisfied */
+    NULL,                          /* get_poll_events */
+    NULL,                          /* poll_event */
+    no_read_fd,                    /* get_read_fd */
+    no_write_fd,                   /* get_write_fd */
+    no_flush,                      /* flush */
+    no_get_file_info,              /* get_file_info */
+    no_destroy                     /* destroy */
 };