};
+struct kill_wineserver_request
+{
+ struct request_header __header;
+ int signal;
+};
+struct kill_wineserver_reply
+{
+ struct reply_header __header;
+};
+
+
enum request
{
REQ_new_process,
REQ_get_device_name,
REQ_get_device,
REQ_close_lock_fd,
+ REQ_kill_wineserver,
REQ_NB_REQUESTS
};
struct get_device_name_request get_device_name_request;
struct get_device_request get_device_request;
struct close_lock_fd_request close_lock_fd_request;
+ struct kill_wineserver_request kill_wineserver_request;
};
union generic_reply
{
struct get_device_name_reply get_device_name_reply;
struct get_device_reply get_device_reply;
struct close_lock_fd_reply close_lock_fd_reply;
+ struct kill_wineserver_reply kill_wineserver_reply;
};
-#define SERVER_PROTOCOL_VERSION 10385
+#define SERVER_PROTOCOL_VERSION 10386
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
shutdown_timeout = add_timeout_user( master_socket_timeout, server_shutdown_timeout, NULL );
}
}
+
+/* kill the wineserver process */
+DECL_HANDLER(kill_wineserver)
+{
+ int ret;
+
+ if (req->signal)
+ ret = kill_lock_owner( req->signal );
+ else
+ ret = kill_lock_owner( -1 );
+ exit( !ret );
+}
@REQ(close_lock_fd)
VARARG(filename,string); /* file name */
@END
+
+/* Kill the wineserver process */
+@REQ(kill_wineserver)
+ int signal; /* sending signal */
+@END
DECL_HANDLER(get_device_name);
DECL_HANDLER(get_device);
DECL_HANDLER(close_lock_fd);
+DECL_HANDLER(kill_wineserver);
#ifdef WANT_REQUEST_HANDLERS
(req_handler)req_get_device_name,
(req_handler)req_get_device,
(req_handler)req_close_lock_fd,
+ (req_handler)req_kill_wineserver,
};
C_ASSERT( sizeof(affinity_t) == 8 );
C_ASSERT( FIELD_OFFSET(struct get_device_reply, user_ptr) == 8 );
C_ASSERT( sizeof(struct get_device_reply) == 16 );
C_ASSERT( sizeof(struct close_lock_fd_request) == 16 );
+C_ASSERT( sizeof(struct kill_wineserver_request) == 16 );
#endif /* WANT_REQUEST_HANDLERS */
dump_varargs_string( cur_size );
}
+static void dump_kill_wineserver_request( const struct kill_wineserver_request *req )
+{
+}
+
static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
(dump_func)dump_new_process_request,
(dump_func)dump_get_new_process_info_request,
(dump_func)dump_get_device_name_request,
(dump_func)dump_get_device_request,
(dump_func)dump_close_lock_fd_request,
+ (dump_func)dump_kill_wineserver_request,
};
static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
(dump_func)dump_get_device_name_reply,
(dump_func)dump_get_device_reply,
NULL,
+ NULL,
};
static const char * const req_names[REQ_NB_REQUESTS] = {
"get_device_name",
"get_device",
"close_lock_fd",
+ "kill_wineserver",
};
static const struct