server: Add an async_data_t structure to store parameters for async I/O requests.
diff --git a/server/serial.c b/server/serial.c
index 866547b..40724d8 100644
--- a/server/serial.c
+++ b/server/serial.c
@@ -65,7 +65,7 @@
 static void serial_poll_event( struct fd *fd, int event );
 static enum server_fd_type serial_get_info( struct fd *fd, int *flags );
 static int serial_flush( struct fd *fd, struct event **event );
-static void serial_queue_async( struct fd *fd, void *apc, void *user, void *iosb, int type, int count );
+static void serial_queue_async( struct fd *fd, const async_data_t *data, int type, int count );
 static void serial_cancel_async( struct fd *fd );
 
 struct serial
@@ -241,8 +241,7 @@
     set_fd_events( fd, serial_get_poll_events(fd) );
 }
 
-static void serial_queue_async( struct fd *fd, void *apc, void *user, void *iosb,
-                                int type, int count )
+static void serial_queue_async( struct fd *fd, const async_data_t *data, int type, int count )
 {
     struct serial *serial = get_fd_user( fd );
     struct list *queue;
@@ -272,7 +271,7 @@
     }
 
     add_timeout( &when, timeout );
-    if (!create_async( current, timeout ? &when : NULL, queue, apc, user, iosb )) return;
+    if (!create_async( current, timeout ? &when : NULL, queue, data )) return;
 
     /* Check if the new pending request can be served immediately */
     events = check_fd_events( fd, serial_get_poll_events( fd ) );