Use a separate FIFO pair for server requests that don't need to pass a
file descriptor.
Associate file descriptors with handles on the server side so that we
don't need to pass the fd every time the client wants to use it.
diff --git a/server/trace.c b/server/trace.c
index bad07e8..534f4d43 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -471,21 +471,23 @@
fprintf( stderr, " handle=%d", req->handle );
}
-static void dump_get_handle_info_request( const struct get_handle_info_request *req )
+static void dump_close_handle_reply( const struct close_handle_request *req )
{
- fprintf( stderr, " handle=%d", req->handle );
-}
-
-static void dump_get_handle_info_reply( const struct get_handle_info_request *req )
-{
- fprintf( stderr, " flags=%d", req->flags );
+ fprintf( stderr, " fd=%d", req->fd );
}
static void dump_set_handle_info_request( const struct set_handle_info_request *req )
{
fprintf( stderr, " handle=%d,", req->handle );
fprintf( stderr, " flags=%d,", req->flags );
- fprintf( stderr, " mask=%d", req->mask );
+ fprintf( stderr, " mask=%d,", req->mask );
+ fprintf( stderr, " fd=%d", req->fd );
+}
+
+static void dump_set_handle_info_reply( const struct set_handle_info_request *req )
+{
+ fprintf( stderr, " old_flags=%d,", req->old_flags );
+ fprintf( stderr, " cur_fd=%d", req->cur_fd );
}
static void dump_dup_handle_request( const struct dup_handle_request *req )
@@ -500,7 +502,8 @@
static void dump_dup_handle_reply( const struct dup_handle_request *req )
{
- fprintf( stderr, " handle=%d", req->handle );
+ fprintf( stderr, " handle=%d,", req->handle );
+ fprintf( stderr, " fd=%d", req->fd );
}
static void dump_open_process_request( const struct open_process_request *req )
@@ -957,7 +960,8 @@
fprintf( stderr, " header_size=%d,", req->header_size );
fprintf( stderr, " base=%p,", req->base );
fprintf( stderr, " shared_file=%d,", req->shared_file );
- fprintf( stderr, " shared_size=%d", req->shared_size );
+ fprintf( stderr, " shared_size=%d,", req->shared_size );
+ fprintf( stderr, " anonymous=%d", req->anonymous );
}
static void dump_create_device_request( const struct create_device_request *req )
@@ -1471,7 +1475,6 @@
(dump_func)dump_queue_apc_request,
(dump_func)dump_get_apc_request,
(dump_func)dump_close_handle_request,
- (dump_func)dump_get_handle_info_request,
(dump_func)dump_set_handle_info_request,
(dump_func)dump_dup_handle_request,
(dump_func)dump_open_process_request,
@@ -1582,9 +1585,8 @@
(dump_func)0,
(dump_func)0,
(dump_func)dump_get_apc_reply,
- (dump_func)0,
- (dump_func)dump_get_handle_info_reply,
- (dump_func)0,
+ (dump_func)dump_close_handle_reply,
+ (dump_func)dump_set_handle_info_reply,
(dump_func)dump_dup_handle_reply,
(dump_func)dump_open_process_reply,
(dump_func)dump_select_reply,
@@ -1695,7 +1697,6 @@
"queue_apc",
"get_apc",
"close_handle",
- "get_handle_info",
"set_handle_info",
"dup_handle",
"open_process",