From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I64EH-00060l-D4 for qemu-devel@nongnu.org; Wed, 04 Jul 2007 08:45:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I64EF-0005yu-1f for qemu-devel@nongnu.org; Wed, 04 Jul 2007 08:45:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I64EE-0005yr-RV for qemu-devel@nongnu.org; Wed, 04 Jul 2007 08:45:06 -0400 Received: from mx2.suse.de ([195.135.220.15]) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1I64EE-0003Br-AR for qemu-devel@nongnu.org; Wed, 04 Jul 2007 08:45:06 -0400 Received: from Relay2.suse.de (mail2.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id F39C72162B for ; Wed, 4 Jul 2007 14:45:03 +0200 (CEST) Message-ID: <468B96F2.2060400@suse.de> Date: Wed, 04 Jul 2007 14:47:46 +0200 From: Alexander Graf MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080508090902070707070500" Subject: [Qemu-devel] [PATCH] sigio fd passing Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------080508090902070707070500 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit The SIGIO signal info struct includes an 'fd'-field which some applications (esp. libasound) rely on. This patch passes this through to the emulated program. Alex --------------080508090902070707070500 Content-Type: text/plain; name="alsa_sigio" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="alsa_sigio" Index: qemu/linux-user/signal.c =================================================================== --- qemu.orig/linux-user/signal.c +++ qemu/linux-user/signal.c @@ -207,6 +207,8 @@ static inline void host_to_target_siginf /* should never come here, but who knows. The information for the target is irrelevant */ tinfo->_sifields._sigfault._addr = 0; + } else if (sig == SIGIO) { + tinfo->_sifields._sigpoll._fd = info->si_fd; } else if (sig >= TARGET_SIGRTMIN) { tinfo->_sifields._rt._pid = info->si_pid; tinfo->_sifields._rt._uid = info->si_uid; @@ -228,6 +230,8 @@ static void tswap_siginfo(target_siginfo sig == SIGBUS || sig == SIGTRAP) { tinfo->_sifields._sigfault._addr = tswapl(info->_sifields._sigfault._addr); + } else if (sig == SIGIO) { + tinfo->_sifields._sigpoll._fd = tswap32(info->_sifields._sigpoll._fd); } else if (sig >= TARGET_SIGRTMIN) { tinfo->_sifields._rt._pid = tswap32(info->_sifields._rt._pid); tinfo->_sifields._rt._uid = tswap32(info->_sifields._rt._uid); --------------080508090902070707070500--