From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=58957 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OMabP-0003zg-I2 for qemu-devel@nongnu.org; Thu, 10 Jun 2010 01:46:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OMabO-0001HH-EI for qemu-devel@nongnu.org; Thu, 10 Jun 2010 01:46:55 -0400 Received: from iksaif.net ([88.191.73.63]:36285) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OMabO-0001Gc-9O for qemu-devel@nongnu.org; Thu, 10 Jun 2010 01:46:54 -0400 From: Corentin Chary Date: Thu, 10 Jun 2010 07:46:41 +0200 Message-Id: <1276148803-4796-1-git-send-email-corentincj@iksaif.net> Subject: [Qemu-devel] [PATCH v3 0/2] Threaded VNC server List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Corentin Chary , Anthony Liguori , Alexander Graf , Adam Litke Hi, This series add a threaded VNC server and should be applied on top on my previous patch set (adding tight encoding). The first patch add some functions to qemu-thread. The last oneis the threaded VNC server. Thanks Since v1: * Moved locks from VncState to VncDisplay because it's only used in vnc_refresh * Use trylock in vnc_refresh. If there is an encoding task still running, reschedule the refresh. This really boost performances and make the vnc server truly asynchroneous. The only blocking lock is the output_mutex which is only held during a simple memcpy(). * Fixed issues found by Paolo, except the exit condition, mainly because we can only have one queue per VncState (due to zstreams), so this is not really an issue. * Rebased on top of jpeg and ui/ patchs Since v2: * renamed vnc-jobs.c vnc-jobs-async.c * added vnc-jobs.h, refactor functions declarations, export vnc_[un]lock_display() and vnc_[un]lock_output() and use them in vnc-jobs-async.c (reported by Avi) * rework exit condition for vnc_worker_thread_loop (Paolo) * abord -> abort (Paolo) * call qemu_thread_self() (Paolo) * Coding style issues (Alexander) * Move from empty macros to empty statis inline (Alexander) Alexander also suggested me to use stw_be_p() defined in cpu-all.h, but when I tried to include cpu-all.h, it broke every thing. Anyway it can be done later since this code is already present in vnc.c. Also vnc_async_encoding_start() could be cleaner if encoding members where in a specific structure, but this is a lot of changes, and as I'm also working on encodings, I want this patch to be easy to rebase. So I'll do as soon as the VNC server is merged. Corentin Chary (2): qemu-thread: add qemu_mutex/cond_destroy and qemu_mutex_exit vnc: threaded VNC server Makefile.objs | 7 +- configure | 13 ++ qemu-thread.c | 22 +++ qemu-thread.h | 4 + ui/vnc-jobs-async.c | 357 +++++++++++++++++++++++++++++++++++++++++++++++++++ ui/vnc-jobs-sync.c | 73 +++++++++++ ui/vnc-jobs.h | 87 +++++++++++++ ui/vnc.c | 144 +++++++++++++++++---- ui/vnc.h | 49 +++++++ 9 files changed, 731 insertions(+), 25 deletions(-) create mode 100644 ui/vnc-jobs-async.c create mode 100644 ui/vnc-jobs-sync.c create mode 100644 ui/vnc-jobs.h