Added server-side file mapping object support.

diff --git a/server/console.c b/server/console.c
index 7ef0f92..f9f4ed7 100644
--- a/server/console.c
+++ b/server/console.c
@@ -30,7 +30,7 @@
 };
 
 static void console_dump( struct object *obj, int verbose );
-static void console_add_queue( struct object *obj, struct wait_queue_entry *entry );
+static int console_add_queue( struct object *obj, struct wait_queue_entry *entry );
 static void console_remove_queue( struct object *obj, struct wait_queue_entry *entry );
 static int console_signaled( struct object *obj, struct thread *thread );
 static int console_get_read_fd( struct object *obj );
@@ -124,15 +124,22 @@
             console->is_read ? "input" : "output", console->fd );
 }
 
-static void console_add_queue( struct object *obj, struct wait_queue_entry *entry )
+static int console_add_queue( struct object *obj, struct wait_queue_entry *entry )
 {
     struct console *console = (struct console *)obj;
     assert( obj->ops == &console_ops );
     if (!obj->head)  /* first on the queue */
-        add_select_user( console->fd,
-                         console->is_read ? READ_EVENT : WRITE_EVENT,
-                         &select_ops, console );
+    {
+        if (!add_select_user( console->fd,
+                              console->is_read ? READ_EVENT : WRITE_EVENT,
+                              &select_ops, console ))
+        {
+            SET_ERROR( ERROR_OUTOFMEMORY );
+            return 0;
+        }
+    }
     add_queue( obj, entry );
+    return 1;
 }
 
 static void console_remove_queue( struct object *obj, struct wait_queue_entry *entry )