From patchwork Thu Feb 20 09:20:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393643 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9CB9D924 for ; Thu, 20 Feb 2020 09:24:09 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7DC8920801 for ; Thu, 20 Feb 2020 09:24:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7DC8920801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38428 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i40-0000WN-Mf for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:24:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51786) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1X-00048z-4i for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1W-00088v-4T for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:35 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:38107) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1V-000886-Rn for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:34 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M5PRT-1j3sXF3qgX-001VXL; Thu, 20 Feb 2020 10:20:57 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 01/13] linux-user: Implement membarrier syscall Date: Thu, 20 Feb 2020 10:20:41 +0100 Message-Id: <20200220092053.1510215-2-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:pCfKeP0sdaMCzYW0ZbJkVeNq0bI4maMyKzmKSjuSrcmKZI1xGFd 7C0K27YLuS00xrsNInms9G+O2K4tRcQaeqxSzBCcXis/AMu7vyx2Kr6O/6NNP6tFi9qzFPM 0bn3Qxis0smc/6WJeUPkTZ4uRk7k1lNcycdY2bN38S6KFWUO/kgouKgcDK11cf+J6Uyc1gd cqHwqEvkBII+PJAllSNAw== X-UI-Out-Filterresults: notjunk:1;V03:K0:QHo6oa5FLIk=:eUQqno9qkdHaBHO60/r+WJ uu6febSZaNZW1CIWMRshqWUF3RwlrxB+y81w8BFH18yOaME2/0KdgJE5I5N8+5odZSfAvPkT0 ZvzZ3Ke/Xi+n6u2LpWmyhSqc8aiqSh3m9acynt79yoQzK4bMnL9wq5rILGV3f4azLp0sF/+qP uvMI+5oG0iMZR8sDf5q9AAQ97I5yGVTvbAQDFAXQRHBA2y3oSKdxZDxr0LjMPQKR4Y5l/OyOf C/O+oFyWxM1k7rHH0mpDBp6LJabac5Gf3Ea6HmgeMUgr1deo3/9vl+fxonUb0KH+Egh7/RVsN j+7b+HzTB+JmGBzCUDqdSUiZTSphSD4/iW7j5NUkJDTCh+FExz2yR04tOy3h/aVvX5IJgoP7X OfHvlnCbYC0ljhJi0FMGkK9G/uLhA3RDydaXf1QWWiFvmnnBQKFiuWdiEijMWA9RGXxhfiEzl mi6y++Cc09Z/gAdSAAuFDiVn8OucmdaAclDVR2AGRq4xipMoLoNUr0JRJ1u6nvJOnE78PLCkZ vFwBIDDpSSZz2qj37iHo0DZMy2L6M4nxOrLZUXbDO+lYRVjpml0SHm4GXye5Q3iFbI+wOHF9P X2nTYWTqDJb2+yGiHuqdYmQgn7tvJJhNaGFJ2l1qOzDsm+58Ebcu90a3whxgHOIVINQmU/R4b tBn1aJNOEzLee8NYEdHlPH8vX3/b6LDuMeRgPzn1H9ZwEjkEbl8Ldi6fu+2MPu1ak1YJhEEDH LrwJaEXmrbgakEa6/BW6SRk5WchhiMt/1Tr1R1oFdEKVmbdc0edJobzVg2v/u2VZhi35Vxtu2 Uu3QkXpTnRoAPhHtgYsfRAnVn8/Mj+YpJ3LULmaFdYp7eNB1zwZ+Fn4NUdw1Ajfh1KDgz+9 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.75 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andreas Schwab , Riku Voipio , Laurent Vivier , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Andreas Schwab Signed-off-by: Andreas Schwab Reviewed-by: Laurent Vivier Message-Id: Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index c930577686da..7aaa9d96397c 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -334,6 +334,9 @@ _syscall5(int, kcmp, pid_t, pid1, pid_t, pid2, int, type, _syscall5(int, sys_statx, int, dirfd, const char *, pathname, int, flags, unsigned int, mask, struct target_statx *, statxbuf) #endif +#if defined(TARGET_NR_membarrier) && defined(__NR_membarrier) +_syscall2(int, membarrier, int, cmd, int, flags) +#endif static bitmask_transtbl fcntl_flags_tbl[] = { { TARGET_O_ACCMODE, TARGET_O_WRONLY, O_ACCMODE, O_WRONLY, }, @@ -12090,6 +12093,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, unlock_user(p, arg1, 0); return ret; #endif +#if defined TARGET_NR_membarrier && defined __NR_membarrier + case TARGET_NR_membarrier: + return get_errno(membarrier(arg1, arg2)); +#endif default: qemu_log_mask(LOG_UNIMP, "Unsupported syscall: %d\n", num); From patchwork Thu Feb 20 09:20:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393647 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 92D66924 for ; Thu, 20 Feb 2020 09:25:42 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 722C720801 for ; Thu, 20 Feb 2020 09:25:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 722C720801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38462 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i5V-0003cD-In for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:25:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51806) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1X-00049k-QW for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1W-00089H-Ql for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:35 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:48947) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1W-00088h-Ho for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:34 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M7KKA-1j5oTF2Oqq-007o8U; Thu, 20 Feb 2020 10:20:57 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 02/13] linux-user: implement getsockopt SO_RCVTIMEO and SO_SNDTIMEO Date: Thu, 20 Feb 2020 10:20:42 +0100 Message-Id: <20200220092053.1510215-3-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:piuR98raXOCQseHB9gJlYbGRMo6LpwDMndEJ/p23L8vng4uA3Cs iXwZaTtEQFdAH3WMFENYmv5hkQBMFtI867KilwQYwURNkvaHI1NSmwqOk3rC4GdFMKgbubI ixGllbIHsNhxY1cfqb6N0NLf4JIG5ke++lHnx7LBE+btLnkw0NzqGYsbZ4tRlYiSrm3Lug/ 1W8r1BB3EysUwSeRGE6zA== X-UI-Out-Filterresults: notjunk:1;V03:K0:cAtAgkIHimU=:GAHb8SLqGq8CA8ucX02zTy H0wDVa7W9CbB24XnNRjzWHJIE2SgYXS2Ps9jFuYuQVjF2Z728do5TOojywz1glbu62YpYkepi f3XNNPeqlvFfn/bkBT9IBkdNeJFEcIVg54VNTGbIhqtltCr2bbxLa2FSswOMFP9j8CMUNQOCi 3eRNu2QC20qyRcm0MaO5McNZ4hBnQU1Ri1zbIxGYr514CE4S+gf1TECvgR6Xku0c9xZG2MKt9 3l3zT3o/+HpcE7Qo7vFEwU+UOSSVNmER5DqxjNoF0sU30zT9aL2yKXdMkawD9UCT5vsHa3c9w 9mDIFRYBBUBHGDsHH5jsS4Mbaebm2Ll3UjLaKz3oQwlUYedyD1uNMpkBblm+EdgXliPlPag29 MEGMuCM44uS0TylO2ZHadTY54cZk90s5QEoYI2NrEcjimNVoXuxLBAdssmjdIJwQZUTnZ/AdG Jsebd4ukpym+EB1hlkuAlsIxtVxP1ZcSZd38avnxd9Hu4f6ILj3NdwzqO+PyXL4xCBgo4sczA rTMqP/sRlEEU+DCcaS1PTGRXGsTpupk7NqswtheHKXRrlejTamXIB4ES4ldexv1cGojZ8iLJk 9oe/VS7BtvSUSUaSIF0DN6B98tVQUeZRZuOdY8RyNLiItAtkxmopkzpHsAzEwqoGvUzMP7ntG NM1+E1OtUHqrl6OsiaLpc08eUQcbexiDXhaX4XIwKiVJ6VmmK3y1QHKEJIyYscD2ApZVS0stz /LAVYAzobkqoYykSA11yoPJtGdx+9E8YB9mnI5kGRc0iC/dr+/SMydN3OkMQxFRWJLYtHNAaz zjd8yAospFudzlZNpQ9bddoj5fMvq32kTyVve3MpQYZS7BIhI24Um6iIZ0LR/nMpMxXBOdr X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.75 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andreas Schwab , Riku Voipio , Laurent Vivier , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Andreas Schwab Signed-off-by: Andreas Schwab Reviewed-by: Laurent Vivier Message-Id: Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 7aaa9d96397c..9fa722f2388d 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2310,10 +2310,42 @@ static abi_long do_getsockopt(int sockfd, int level, int optname, level = SOL_SOCKET; switch (optname) { /* These don't just return a single integer */ - case TARGET_SO_RCVTIMEO: - case TARGET_SO_SNDTIMEO: case TARGET_SO_PEERNAME: goto unimplemented; + case TARGET_SO_RCVTIMEO: { + struct timeval tv; + socklen_t tvlen; + + optname = SO_RCVTIMEO; + +get_timeout: + if (get_user_u32(len, optlen)) { + return -TARGET_EFAULT; + } + if (len < 0) { + return -TARGET_EINVAL; + } + + tvlen = sizeof(tv); + ret = get_errno(getsockopt(sockfd, level, optname, + &tv, &tvlen)); + if (ret < 0) { + return ret; + } + if (len > sizeof(struct target_timeval)) { + len = sizeof(struct target_timeval); + } + if (copy_to_user_timeval(optval_addr, &tv)) { + return -TARGET_EFAULT; + } + if (put_user_u32(len, optlen)) { + return -TARGET_EFAULT; + } + break; + } + case TARGET_SO_SNDTIMEO: + optname = SO_SNDTIMEO; + goto get_timeout; case TARGET_SO_PEERCRED: { struct ucred cr; socklen_t crlen; From patchwork Thu Feb 20 09:20:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393639 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id F2D8C17E0 for ; Thu, 20 Feb 2020 09:22:48 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D407B20801 for ; Thu, 20 Feb 2020 09:22:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D407B20801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38406 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i2i-0006Pt-1D for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:22:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51829) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1Y-0004Al-Mj for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1X-00089t-JK for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:36 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:52351) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1X-000898-AZ for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:35 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MowbA-1jnQkG1JQk-00qSYm; Thu, 20 Feb 2020 10:20:58 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 03/13] configure: linux-user doesn't need neither fdt nor slirp Date: Thu, 20 Feb 2020 10:20:43 +0100 Message-Id: <20200220092053.1510215-4-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:g7jr1Oo7TNJ4RBbjS0H77mSIjtitZ5qtY+rdDJQQz/1VooACeUV Hb7CNL73FXPMYgxA3QQgpSljXFG78xCZvUnsC6nV+OvQTEeeCq+/Kh+bTcQ5k9FtV/anZ6J kfB0nOgd7y5pPX/mQJwyb9jIQ/g4D1KOZKi++XMq5LCotfxSmN3XGkIYEED8wsYE76HNWyI jE3T/QjdKn2QXMABa6ZaA== X-UI-Out-Filterresults: notjunk:1;V03:K0:95K06Bnstkc=:AX8wqXNtMP1PuZKv1YWtgP hIAOgZM8TMyJXSlfY3h44g4AFS0ss4MglauqoKrxOEwDU/iYcaKnMiWuwUlaQpS7Kr43GJ1MU S5C0CSUMz5NLjJ+DilyAEnCFb3T5a+D8/lY3KPeaIns68R8vbQWx+0YbWgtyvRNu6lOfdG1zo rd2dMKhiKWLNsRm88rNzT4cdbEIC7lz4EL2kebx97SCScLnuOBLpVPaWIPDtKxkexTZeM0he9 tf/DfNPxAISr+969pD+8QudK2M3LP5iZ0dN8cb9g5RgezTjnz8WbH2X+rXieIZIT7Hl86j8U4 251oGTOigM00OD9KmbteSe0tAYHtIjcqa7aP38x2tdNyDPgRpstcKD8XsQNO155+WSdFdHyCS 4C5eMDAZWWYjPEssiY0x9S9smL3ewV6Ov1UaApAihFRqvuOtkBvmEHiTpfFK6aoU0ciJt1HiL a1nGXRfB4o4KEeh6ldPuOeniJH6RYgjQfZvUftGwBw24OFn/mM07SsF8T2W4umD5b5RUwu7Yj 5yi1mWxXXDnl4k2qYl/GCSYUvYjsIyZrd66xqGJh/Y2Uvrwz51gZ0mlx+hsoy3dPcPbQcfW+p kFejWVKbT0CXTn6EsnsXTxq9pmstBYJWvqe2cO9/sKdI6fGyDeFH3OtIYMLK/UQf/xrvrg5Sm pEmHcBopqdYe6Cr6AuPCht+yeDwcAvWfOUDrFFYXl4qE7JidV8pvy7/r4NIr1hRKvovMnoHQD E4nKOeVAw/xerAE/G/iTWEAP79hjh0FSKzfKzSJh/7NbcnIbDtODTsNkDn9l7l2f1khpUTzsl NpE1MKNXa4ZfhZKbGIeyDsVkuNOtP0XtMfpR3mkttHzNLBqgTcrJDBYenAoCoHl+MO7EqKK X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.13 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Riku Voipio , Laurent Vivier , Aleksandar Markovic , =?utf-8?q?Marc-Andr=C3=A9_Lur?= =?utf-8?q?eau?= , Aleksandar Rikalo , =?utf-8?q?Philippe_Mathieu?= =?utf-8?q?-Daud=C3=A9?= , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Laurent Vivier if softmmu is not enabled, we disable by default fdt and slirp as they are only used by -softmmu targets. A side effect is the git submodules are not cloned if they are not needed. Clone and build can be forced with --enable-fdt and --enable-slirp. Signed-off-by: Laurent Vivier Reviewed-by: Marc-André Lureau Reviewed-by: Philippe Mathieu-Daudé Tested-by: Philippe Mathieu-Daudé Message-Id: <20190621130544.18860-1-lvivier@redhat.com> Signed-off-by: Laurent Vivier --- configure | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/configure b/configure index 6f5d85094965..5f5f4befb9f6 100755 --- a/configure +++ b/configure @@ -4135,6 +4135,11 @@ elif test "$fdt" != "yes" ; then fdt=no fi +# fdt is only required when building softmmu targets +if test -z "$fdt" -a "$softmmu" != "yes" ; then + fdt="no" +fi + if test "$fdt" != "no" ; then fdt_libs="-lfdt" # explicitly check for libfdt_env.h as it is missing in some stable installs @@ -6078,6 +6083,11 @@ fi ########################################## # check for slirp +# slirp is only required when building softmmu targets +if test -z "$slirp" -a "$softmmu" != "yes" ; then + slirp="no" +fi + case "$slirp" in "" | yes) if $pkg_config slirp; then From patchwork Thu Feb 20 09:20:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393649 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B4C1B924 for ; Thu, 20 Feb 2020 09:25:43 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9647920801 for ; Thu, 20 Feb 2020 09:25:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9647920801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38464 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i5W-0003fJ-Mc for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:25:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51874) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1c-0004H0-QS for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1b-0008C6-2A for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:40 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:36411) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1a-0008Ba-P6 for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:39 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MCsDe-1jDXhb02Cm-008tX8; Thu, 20 Feb 2020 10:20:59 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 04/13] linux-user/strace: Improve output of various syscalls Date: Thu, 20 Feb 2020 10:20:44 +0100 Message-Id: <20200220092053.1510215-5-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:7jlKCWT83LjMYf7RMn3RsYkXwIk6Y76XHxJomSuhmLJMMWzDnQK ij3Ae0g5UK4xxBpju1TX1RF8kOY8SmL7Rh6bkTJoBsBJkPQJMFETOzOcmW+RMeVrLbLZ4MY Jrvl2qzVbiQC+YtUkFnC88nu4r193OY4IwD1ytCAhO6YO0sWz/cPQWdTrdqOW/x9Agau/ax zPK/04PvxIOWtE4Uuhh2A== X-UI-Out-Filterresults: notjunk:1;V03:K0:p4cvV7Woppo=:Ze8p5NyA//LByydecn4GJ6 1g9cHMOpBfco2HJWQMNnkbioAiIwPZvL/gVW6fNP83H4Leb6j85AoKAmwsPBdj2s/gty4jptk DXwDQAo0pt0O94DxnZ/UnUjyNGIIsvZaazPNht0Kb/qX7rW0+1vacvbu5kMhuy9t7BNLQOq64 XH8l8SctAuMb7D7+7lkXW4SaGoYn/s0Z417nd229ywAMC7emUQgcpmXOPWX6CtUlyG5LBHPO/ 3ib/CeaylEHEe/Dpr2Yz2CBbBXGUPrvHq0FtfjWswrd2tIYwWO+OY+l2S4dmCd/Vw3r//8SNC 1BtTDJ+VYLqgKXtBE1UewrklCX5BJGTBgFgU3HnpzO1yyZe90tCnFoIqRa+ztxxhrqMrZfYRf es+A4ADFVqPrNZXXAlI2RvelLIzQIWhxqCRXpWcYlYXXozQkMQpzTFZceB6kRSI+bxQ5Yk56r EqNWGj1kwOtqqsCcitBFsoa54QhDF7KLvkDumFDgbZwVZiZ51WjDP9t2prGRw8HQ4nQ+3OvUA dCBVbGxW8x72RwHbM17yWcW1wqpc6XlhYdUkBPcx8Wi6XtKwQxuBK1j44uj4NLIqFJd8Xrr6j 2SxWhPPLPNS9BmtV9V8SnpxnAw0RnnnmRTVlDVxkmo0ZARqljkDeOPQGUPHX3Sg+LOK4IYEjd qGkYPTwH2O7B6HIJD3x+S/UtQrPaKOmGbxIj1Lb7DuFpFMmZ0JdQuJzsOM39vNzE1T+SWsCAP Sg+mN3kpxyLga9cHyvA/c4kQIO6fFIUMKkVY6QvOLhriGzrOS2GwBD40c95y9yxsvd8um73Eu XGJDrCp+vM0bSA89leR+HFeg3lgKN9VFIR+tQwKPAIRD6FZGIkQ9yy49jNa3jlS61jhQ01u X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.75 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Helge Deller , Riku Voipio , Laurent Vivier , Aleksandar Markovic , Aleksandar Rikalo , =?utf-8?q?Philippe_Mathieu?= =?utf-8?q?-Daud=C3=A9?= , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Improve strace output of various syscalls which either have none or only int-type parameters. Signed-off-by: Helge Deller Reviewed-by: Aleksandar Markovic Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20191121193351.GA31821@ls3530.fritz.box> Signed-off-by: Laurent Vivier --- linux-user/strace.list | 52 +++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/linux-user/strace.list b/linux-user/strace.list index 1de4319dcf87..d49a1e92a80e 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -26,7 +26,7 @@ { TARGET_NR_afs_syscall, "afs_syscall" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_alarm -{ TARGET_NR_alarm, "alarm" , NULL, NULL, NULL }, +{ TARGET_NR_alarm, "alarm" , "%s(%u)", NULL, NULL }, #endif #ifdef TARGET_NR_aplib { TARGET_NR_aplib, "aplib" , NULL, NULL, NULL }, @@ -116,19 +116,19 @@ { TARGET_NR_dipc, "dipc" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_dup -{ TARGET_NR_dup, "dup" , NULL, NULL, NULL }, +{ TARGET_NR_dup, "dup" , "%s(%d)", NULL, NULL }, #endif #ifdef TARGET_NR_dup2 -{ TARGET_NR_dup2, "dup2" , NULL, NULL, NULL }, +{ TARGET_NR_dup2, "dup2" , "%s(%d,%d)", NULL, NULL }, #endif #ifdef TARGET_NR_dup3 -{ TARGET_NR_dup3, "dup3" , NULL, NULL, NULL }, +{ TARGET_NR_dup3, "dup3" , "%s(%d,%d,%d)", NULL, NULL }, #endif #ifdef TARGET_NR_epoll_create -{ TARGET_NR_epoll_create, "epoll_create" , NULL, NULL, NULL }, +{ TARGET_NR_epoll_create, "%s(%d)", NULL, NULL, NULL }, #endif #ifdef TARGET_NR_epoll_create1 -{ TARGET_NR_epoll_create1, "epoll_create1" , NULL, NULL, NULL }, +{ TARGET_NR_epoll_create1, "%s(%d)", NULL, NULL, NULL }, #endif #ifdef TARGET_NR_epoll_ctl { TARGET_NR_epoll_ctl, "epoll_ctl" , NULL, NULL, NULL }, @@ -146,10 +146,10 @@ { TARGET_NR_epoll_wait_old, "epoll_wait_old" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_eventfd -{ TARGET_NR_eventfd, "eventfd" , NULL, NULL, NULL }, +{ TARGET_NR_eventfd, "eventfd", "%s(%d)", NULL, NULL }, #endif #ifdef TARGET_NR_eventfd2 -{ TARGET_NR_eventfd2, "eventfd2" , NULL, NULL, NULL }, +{ TARGET_NR_eventfd2, "eventfd2" , "%s(%d,%d)", NULL, NULL }, #endif #ifdef TARGET_NR_execv { TARGET_NR_execv, "execv" , NULL, print_execv, NULL }, @@ -191,7 +191,7 @@ { TARGET_NR_fanotify_mark, "fanotify_mark" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_fchdir -{ TARGET_NR_fchdir, "fchdir" , NULL, NULL, NULL }, +{ TARGET_NR_fchdir, "fchdir" , "%s(%d)", NULL, NULL }, #endif #ifdef TARGET_NR_fchmod { TARGET_NR_fchmod, "fchmod" , "%s(%d,%#o)", NULL, NULL }, @@ -287,7 +287,7 @@ { TARGET_NR_getdtablesize, "getdtablesize" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_getegid -{ TARGET_NR_getegid, "getegid" , NULL, NULL, NULL }, +{ TARGET_NR_getegid, "getegid" , "%s()", NULL, NULL }, #endif #ifdef TARGET_NR_getegid32 { TARGET_NR_getegid32, "getegid32" , NULL, NULL, NULL }, @@ -299,7 +299,7 @@ { TARGET_NR_geteuid32, "geteuid32" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_getgid -{ TARGET_NR_getgid, "getgid" , NULL, NULL, NULL }, +{ TARGET_NR_getgid, "getgid" , "%s()", NULL, NULL }, #endif #ifdef TARGET_NR_getgid32 { TARGET_NR_getgid32, "getgid32" , NULL, NULL, NULL }, @@ -329,10 +329,10 @@ { TARGET_NR_getpeername, "getpeername" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_getpgid -{ TARGET_NR_getpgid, "getpgid" , NULL, NULL, NULL }, +{ TARGET_NR_getpgid, "getpgid" , "%s(%u)", NULL, NULL }, #endif #ifdef TARGET_NR_getpgrp -{ TARGET_NR_getpgrp, "getpgrp" , NULL, NULL, NULL }, +{ TARGET_NR_getpgrp, "getpgrp" , "%s()", NULL, NULL }, #endif #ifdef TARGET_NR_getpid { TARGET_NR_getpid, "getpid" , "%s()", NULL, NULL }, @@ -432,7 +432,7 @@ { TARGET_NR_io_cancel, "io_cancel" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_ioctl -{ TARGET_NR_ioctl, "ioctl" , NULL, NULL, NULL }, +{ TARGET_NR_ioctl, "ioctl" , "%s(%d,%#x,%#x)", NULL, NULL }, #endif #ifdef TARGET_NR_io_destroy { TARGET_NR_io_destroy, "io_destroy" , NULL, NULL, NULL }, @@ -1257,22 +1257,22 @@ { TARGET_NR_setdomainname, "setdomainname" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_setfsgid -{ TARGET_NR_setfsgid, "setfsgid" , NULL, NULL, NULL }, +{ TARGET_NR_setfsgid, "setfsgid" , "%s(%u)", NULL, NULL }, #endif #ifdef TARGET_NR_setfsgid32 -{ TARGET_NR_setfsgid32, "setfsgid32" , NULL, NULL, NULL }, +{ TARGET_NR_setfsgid32, "setfsgid32" , "%s(%u)" , NULL, NULL }, #endif #ifdef TARGET_NR_setfsuid -{ TARGET_NR_setfsuid, "setfsuid" , NULL, NULL, NULL }, +{ TARGET_NR_setfsuid, "setfsuid" , "%s(%u)" , NULL, NULL }, #endif #ifdef TARGET_NR_setfsuid32 { TARGET_NR_setfsuid32, "setfsuid32" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_setgid -{ TARGET_NR_setgid, "setgid" , NULL, NULL, NULL }, +{ TARGET_NR_setgid, "setgid" , "%s(%u)", NULL, NULL }, #endif #ifdef TARGET_NR_setgid32 -{ TARGET_NR_setgid32, "setgid32" , NULL, NULL, NULL }, +{ TARGET_NR_setgid32, "setgid32" , "%s(%u)", NULL, NULL }, #endif #ifdef TARGET_NR_setgroups { TARGET_NR_setgroups, "setgroups" , NULL, NULL, NULL }, @@ -1296,7 +1296,7 @@ { TARGET_NR_setns, "setns" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_setpgid -{ TARGET_NR_setpgid, "setpgid" , NULL, NULL, NULL }, +{ TARGET_NR_setpgid, "setpgid" , "%s(%u,%u)", NULL, NULL }, #endif #ifdef TARGET_NR_setpgrp { TARGET_NR_setpgrp, "setpgrp" , NULL, NULL, NULL }, @@ -1311,22 +1311,22 @@ { TARGET_NR_setregid32, "setregid32" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_setresgid -{ TARGET_NR_setresgid, "setresgid" , NULL, NULL, NULL }, +{ TARGET_NR_setresgid, "setresgid" , "%s(%u,%u,%u)", NULL, NULL }, #endif #ifdef TARGET_NR_setresgid32 { TARGET_NR_setresgid32, "setresgid32" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_setresuid -{ TARGET_NR_setresuid, "setresuid" , NULL, NULL, NULL }, +{ TARGET_NR_setresuid, "setresuid" , "%s(%u,%u,%u)", NULL, NULL }, #endif #ifdef TARGET_NR_setresuid32 -{ TARGET_NR_setresuid32, "setresuid32" , NULL, NULL, NULL }, +{ TARGET_NR_setresuid32, "setresuid32" , "%s(%u,%u,%u)", NULL, NULL }, #endif #ifdef TARGET_NR_setreuid -{ TARGET_NR_setreuid, "setreuid" , NULL, NULL, NULL }, +{ TARGET_NR_setreuid, "setreuid" , "%s(%u,%u)", NULL, NULL }, #endif #ifdef TARGET_NR_setreuid32 -{ TARGET_NR_setreuid32, "setreuid32" , NULL, NULL, NULL }, +{ TARGET_NR_setreuid32, "setreuid32" , "%s(%u,%u)", NULL, NULL }, #endif #ifdef TARGET_NR_setrlimit { TARGET_NR_setrlimit, "setrlimit" , NULL, NULL, NULL }, @@ -1335,7 +1335,7 @@ { TARGET_NR_set_robust_list, "set_robust_list" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_setsid -{ TARGET_NR_setsid, "setsid" , NULL, NULL, NULL }, +{ TARGET_NR_setsid, "setsid" , "%s()", NULL, NULL }, #endif #ifdef TARGET_NR_setsockopt { TARGET_NR_setsockopt, "setsockopt" , NULL, NULL, NULL }, From patchwork Thu Feb 20 09:20:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393633 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id F2C6E17E0 for ; Thu, 20 Feb 2020 09:22:28 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D372720801 for ; Thu, 20 Feb 2020 09:22:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D372720801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38400 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i2N-0005md-Pm for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:22:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51807) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1X-00049m-RN for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1W-00089M-RC for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:35 -0500 Received: from mout.kundenserver.de ([212.227.17.24]:37795) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1W-00088e-IO for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:34 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MGA0o-1jEe9v39Tg-00GZZu; Thu, 20 Feb 2020 10:20:59 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 05/13] configure: Avoid compiling system tools on user build by default Date: Thu, 20 Feb 2020 10:20:45 +0100 Message-Id: <20200220092053.1510215-6-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:780mACu1T5rRuaU6FlM80qrxH2TIB1cxn81ytQDssc/c+WkEqKy Ka4qkmq9yWJg57/nqePkIar1s6gp8iIizxFCt5rTj9CHH1j+a0qgy9eWJBGAnvyzNNRiLaf ebV76i9DO6JuDLl3TVHVBMBM+oq9e9QQhWPWT+WEz7Nrn2qJhxn1BGrJ2HfvpQKu0rsnIvC AemFNrMlLalh/ZRui/nzQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:0gVu4KHjcM0=:/U0kTB0Q0FUERlPdE/ueWl Ubh6dWnMwQWFngIqr9vF3hR10GsYgyxVUFxNXkETe1SFkWKsC6OU/CSezDQxQCe166yFw2WsK iY62bWWd3P/DNS7gsuJMxUQ7+BisgHGSplB9CEmQIJHYl6AC/EHlgPaSAe2D4RpJGocMctWGF ooGG4/WvqfDJ/PcXPR7kp8WTIM622Ih+R8uANC1dmEA2xMvsiGsT4eYmr7QG5PblLst3meYY6 +jGKoHqcrl2f7BwKnhxYZmBA6XlCdPA/4Lzyjp/4H3QmQodhSnkjmOGkKvQpQ9Q/kOjCB/ab2 8KGjiI8JsT3VFsUAiFg9EDMAwBHfse9SG1/xFaE2Osg21wxyGb6TOfg4rm/R22pHDg+Ut6NHW LudApx/mm1I6sXbcfu9ONZO7oWFZmwS257RvLDhhAEd/tXxB5AO1NF9iNM7QC36vPzUclUHMS o9sDS+E54T4BpOkXUJR2Kraki3vdxp4HpneSJV1vA3oKzEOla5RLhriji3Ihozz9c+iACp1HO aBGYgm/+/kBP9TmJxqrPIu/4lW7EIL/Nr+Lr/mSTWkcJgZqSyFf0+MD08aSjZ58DUumPOLF+4 MaYXF2MWBvCJwqAwylIGBiNB9UhNx8oJQRgreqvLBpxfAYoTKnl2SGx5rl/gXv1XMcShZl3+R VLfp298LibOOm3HUBtgh/FpdT97D44ztkNzdAhS+qxn57YKNNyrhhwD3zlK7H4iie530aLq0n gfu0TZ9MyS7wXppO3PNi0Se44I09/W3WsKPsZYBFNwpTzl698qTl5Z7OdHEfYEq1/C1TyTups l+I4vMOkuVa2TJXvDcye4cIsbTHMQTU201WhJKLfEECV+aqaCvSOg4w6f8cJ9w7joJEtT+5 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.24 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daudé User-mode does not need the system tools. Do not build them by default if the user specifies --disable-system. This disables building the following binaries on a user-only build: - elf2dmp - qemu-edid - qemu-ga - qemu-img - qemu-io - qemu-nbd - ivshmem-client - ivshmem-server The qemu-user binaries are not affected by this change. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20200217133327.25144-1-f4bug@amsat.org> Signed-off-by: Laurent Vivier --- configure | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 5f5f4befb9f6..d57261e3ad0c 100755 --- a/configure +++ b/configure @@ -455,7 +455,7 @@ guest_agent_ntddscsi="no" guest_agent_msi="" vss_win32_sdk="" win_sdk="no" -want_tools="yes" +want_tools="" libiscsi="" libnfs="" coroutine="" @@ -2213,6 +2213,16 @@ else echo big/little test failed fi +########################################## +# system tools +if test -z "$want_tools"; then + if test "$softmmu" = "no"; then + want_tools=no + else + want_tools=yes + fi +fi + ########################################## # cocoa implies not SDL or GTK # (the cocoa UI code currently assumes it is always the active UI From patchwork Thu Feb 20 09:20:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393653 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 324731580 for ; Thu, 20 Feb 2020 09:26:53 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 035CE20801 for ; Thu, 20 Feb 2020 09:26:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 035CE20801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38484 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i6e-0006KY-1B for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:26:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51905) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1e-0004JK-Pa for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1c-0008Ck-89 for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:42 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:49095) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1b-0008CA-Q5 for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:40 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N49Qd-1jVU5t1cDh-01029T; Thu, 20 Feb 2020 10:21:00 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 06/13] linux-user: Use `qemu_log' for non-strace logging Date: Thu, 20 Feb 2020 10:20:46 +0100 Message-Id: <20200220092053.1510215-7-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:LUucbHyuMxqamvHNWAt25CFB+/lnMJMChHVX8IvmR3BiHfao2BL rxIr3zM94BH1mxgjnCXYV19OicsAl9T9I7PzQu19/7BQ1zLSp5TMX78QUTXGAJ8xBfDdv5l aDlgbzB98P/nun7aIDxzWeMJKqY++iRGA97HrEnD+Q0L8S9AfDIWPisivCZEtR2P4UOQOZu ffXxdX1wQuUMAD7bcaOSQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:OqxRaGxqUf0=:R2fXmGpD5V0cSKx0/9ZmnW fIYuozdPzBHNbKULhxylzs/sFhhH+HYDccPQh9HlZ64MWxTehlU1m321PStuMyKn8NiO1u0nL 4ocezJ+X7HqZxjJ6P6IAi4Z6x5fqhrQwg9NHSNLWj0is7t7y/UUJ5QKCytTM6jrh3t/YGNFIs Tj2RMS6eEdJ/gZoRJilKnJiG0Ozxc6rlPGFN2Ms0un+cDldGUwy+gA17/AzDWSFkr1YNWVweu 4WAYx/2wE3uEg+TjNGpVmvsDpfVtmoqR0Xd9rl04bq7iDLdJr+JJBOdPU2YawrwM0sc/wm5rX 356NcbXAnW0jMQj/trZ2CJBIGrceWr6YNeXSkdnqmOmPDy652ROgXQXP9nFB/+KWcIA1pKR9J YAAMXargxDVG3MMK7A/cqXic+8eHLFt3OeONZYI9np8H/oGV9/Ex+QDYCruNpAJDjzfQ19Ae4 /9Bt9fhkWN5sK4+gbjyz3mOzNFWwkCvCbhd2PNr0oua48X4JVf2t7THPPX/poHqLA1anIJtiU 6uKyDTmkCAcDmLc4VeIJtTiIDuoGWuwFGk0yNOi8SyTu1YJg61f3eGhWEv43QbAl7Bg0O32Rz CdFKjrEfl/jeuwyDXbsRKp6uNlu+zDuyCA/VZlJlIvc+RE8Xt9vJ/TM2NoK0I4i5PIGAJjEXZ +Y/YRgXVdHJIngELPWKhgGMre052PrMQ5XI2x6mgH8F6H/SfAqFQ5RmvGRtY4xZl3ud1I5fDc 3Q7tgQFyNy7umSK+cpOQLQFiceFFrM6eSMGGWTduapCE3elhQoLDOvlH0MnEvfNpcWJfHeTTi W4ZgLnDDodt2HkcxeFH4NufY0byKJbxi74aBOrcY58O26f3AYth3yCxrGAQ4cEXpJwAa4Jw X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.75 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier , Josh Kunz , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Josh Kunz Since most calls to `gemu_log` are actually logging unimplemented features, this change replaces most non-strace calls to `gemu_log` with calls to `qemu_log_mask(LOG_UNIMP, ...)`. This allows the user to easily log to a file, and to mask out these log messages if they desire. Note: This change is slightly backwards incompatible, since now these "unimplemented" log messages will not be logged by default. Signed-off-by: Josh Kunz Reviewed-by: Laurent Vivier Message-Id: <20200204025416.111409-2-jkz@google.com> Signed-off-by: Laurent Vivier --- linux-user/arm/cpu_loop.c | 5 ++-- linux-user/fd-trans.c | 55 +++++++++++++++++++++++++-------------- linux-user/syscall.c | 35 ++++++++++++++++--------- linux-user/vm86.c | 3 ++- 4 files changed, 62 insertions(+), 36 deletions(-) diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c index 1fae90c6dfc6..cf618daa1ca5 100644 --- a/linux-user/arm/cpu_loop.c +++ b/linux-user/arm/cpu_loop.c @@ -349,8 +349,9 @@ void cpu_loop(CPUARMState *env) env->regs[0] = cpu_get_tls(env); break; default: - gemu_log("qemu: Unsupported ARM syscall: 0x%x\n", - n); + qemu_log_mask(LOG_UNIMP, + "qemu: Unsupported ARM syscall: 0x%x\n", + n); env->regs[0] = -TARGET_ENOSYS; break; } diff --git a/linux-user/fd-trans.c b/linux-user/fd-trans.c index 9b92386abf51..c0687c52e62b 100644 --- a/linux-user/fd-trans.c +++ b/linux-user/fd-trans.c @@ -514,7 +514,8 @@ static abi_long host_to_target_data_bridge_nlattr(struct nlattr *nlattr, u32[1] = tswap32(u32[1]); /* optmask */ break; default: - gemu_log("Unknown QEMU_IFLA_BR type %d\n", nlattr->nla_type); + qemu_log_mask(LOG_UNIMP, "Unknown QEMU_IFLA_BR type %d\n", + nlattr->nla_type); break; } return 0; @@ -577,7 +578,8 @@ static abi_long host_to_target_slave_data_bridge_nlattr(struct nlattr *nlattr, case QEMU_IFLA_BRPORT_BRIDGE_ID: break; default: - gemu_log("Unknown QEMU_IFLA_BRPORT type %d\n", nlattr->nla_type); + qemu_log_mask(LOG_UNIMP, "Unknown QEMU_IFLA_BRPORT type %d\n", + nlattr->nla_type); break; } return 0; @@ -605,7 +607,8 @@ static abi_long host_to_target_data_tun_nlattr(struct nlattr *nlattr, *u32 = tswap32(*u32); break; default: - gemu_log("Unknown QEMU_IFLA_TUN type %d\n", nlattr->nla_type); + qemu_log_mask(LOG_UNIMP, "Unknown QEMU_IFLA_TUN type %d\n", + nlattr->nla_type); break; } return 0; @@ -652,7 +655,8 @@ static abi_long host_to_target_data_linkinfo_nlattr(struct nlattr *nlattr, NULL, host_to_target_data_tun_nlattr); } else { - gemu_log("Unknown QEMU_IFLA_INFO_KIND %s\n", li_context->name); + qemu_log_mask(LOG_UNIMP, "Unknown QEMU_IFLA_INFO_KIND %s\n", + li_context->name); } break; case QEMU_IFLA_INFO_SLAVE_DATA: @@ -663,12 +667,13 @@ static abi_long host_to_target_data_linkinfo_nlattr(struct nlattr *nlattr, NULL, host_to_target_slave_data_bridge_nlattr); } else { - gemu_log("Unknown QEMU_IFLA_INFO_SLAVE_KIND %s\n", + qemu_log_mask(LOG_UNIMP, "Unknown QEMU_IFLA_INFO_SLAVE_KIND %s\n", li_context->slave_name); } break; default: - gemu_log("Unknown host QEMU_IFLA_INFO type: %d\n", nlattr->nla_type); + qemu_log_mask(LOG_UNIMP, "Unknown host QEMU_IFLA_INFO type: %d\n", + nlattr->nla_type); break; } @@ -690,7 +695,8 @@ static abi_long host_to_target_data_inet_nlattr(struct nlattr *nlattr, } break; default: - gemu_log("Unknown host AF_INET type: %d\n", nlattr->nla_type); + qemu_log_mask(LOG_UNIMP, "Unknown host AF_INET type: %d\n", + nlattr->nla_type); } return 0; } @@ -741,7 +747,8 @@ static abi_long host_to_target_data_inet6_nlattr(struct nlattr *nlattr, } break; default: - gemu_log("Unknown host AF_INET6 type: %d\n", nlattr->nla_type); + qemu_log_mask(LOG_UNIMP, "Unknown host AF_INET6 type: %d\n", + nlattr->nla_type); } return 0; } @@ -759,7 +766,8 @@ static abi_long host_to_target_data_spec_nlattr(struct nlattr *nlattr, NULL, host_to_target_data_inet6_nlattr); default: - gemu_log("Unknown host AF_SPEC type: %d\n", nlattr->nla_type); + qemu_log_mask(LOG_UNIMP, "Unknown host AF_SPEC type: %d\n", + nlattr->nla_type); break; } return 0; @@ -780,7 +788,8 @@ static abi_long host_to_target_data_xdp_nlattr(struct nlattr *nlattr, *u32 = tswap32(*u32); break; default: - gemu_log("Unknown host XDP type: %d\n", nlattr->nla_type); + qemu_log_mask( + LOG_UNIMP, "Unknown host XDP type: %d\n", nlattr->nla_type); break; } return 0; @@ -920,7 +929,8 @@ static abi_long host_to_target_data_link_rtattr(struct rtattr *rtattr) NULL, host_to_target_data_xdp_nlattr); default: - gemu_log("Unknown host QEMU_IFLA type: %d\n", rtattr->rta_type); + qemu_log_mask(LOG_UNIMP, "Unknown host QEMU_IFLA type: %d\n", + rtattr->rta_type); break; } return 0; @@ -954,7 +964,8 @@ static abi_long host_to_target_data_addr_rtattr(struct rtattr *rtattr) ci->tstamp = tswap32(ci->tstamp); break; default: - gemu_log("Unknown host IFA type: %d\n", rtattr->rta_type); + qemu_log_mask( + LOG_UNIMP, "Unknown host IFA type: %d\n", rtattr->rta_type); break; } return 0; @@ -996,7 +1007,8 @@ static abi_long host_to_target_data_route_rtattr(struct rtattr *rtattr) #endif break; default: - gemu_log("Unknown host RTA type: %d\n", rtattr->rta_type); + qemu_log_mask( + LOG_UNIMP, "Unknown host RTA type: %d\n", rtattr->rta_type); break; } return 0; @@ -1111,7 +1123,8 @@ static abi_long target_to_host_data_link_rtattr(struct rtattr *rtattr) { switch (rtattr->rta_type) { default: - gemu_log("Unknown target QEMU_IFLA type: %d\n", rtattr->rta_type); + qemu_log_mask(LOG_UNIMP, "Unknown target QEMU_IFLA type: %d\n", + rtattr->rta_type); break; } return 0; @@ -1125,7 +1138,8 @@ static abi_long target_to_host_data_addr_rtattr(struct rtattr *rtattr) case IFA_ADDRESS: break; default: - gemu_log("Unknown target IFA type: %d\n", rtattr->rta_type); + qemu_log_mask(LOG_UNIMP, "Unknown target IFA type: %d\n", + rtattr->rta_type); break; } return 0; @@ -1147,7 +1161,8 @@ static abi_long target_to_host_data_route_rtattr(struct rtattr *rtattr) *u32 = tswap32(*u32); break; default: - gemu_log("Unknown target RTA type: %d\n", rtattr->rta_type); + qemu_log_mask(LOG_UNIMP, "Unknown target RTA type: %d\n", + rtattr->rta_type); break; } return 0; @@ -1232,8 +1247,8 @@ static abi_long host_to_target_data_audit(struct nlmsghdr *nlh) { switch (nlh->nlmsg_type) { default: - gemu_log("Unknown host audit message type %d\n", - nlh->nlmsg_type); + qemu_log_mask(LOG_UNIMP, "Unknown host audit message type %d\n", + nlh->nlmsg_type); return -TARGET_EINVAL; } return 0; @@ -1253,8 +1268,8 @@ static abi_long target_to_host_data_audit(struct nlmsghdr *nlh) case AUDIT_FIRST_USER_MSG2 ... AUDIT_LAST_USER_MSG2: break; default: - gemu_log("Unknown target audit message type %d\n", - nlh->nlmsg_type); + qemu_log_mask(LOG_UNIMP, "Unknown target audit message type %d\n", + nlh->nlmsg_type); return -TARGET_EINVAL; } diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 9fa722f2388d..16d98c1ff5ff 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -1563,7 +1563,11 @@ static inline abi_long target_to_host_cmsg(struct msghdr *msgh, * something more intelligent than "twice the size of the * target buffer we're reading from". */ - gemu_log("Host cmsg overflow\n"); + qemu_log_mask(LOG_UNIMP, + ("Unsupported ancillary data %d/%d: " + "unhandled msg size\n"), + tswap32(target_cmsg->cmsg_level), + tswap32(target_cmsg->cmsg_type)); break; } @@ -1593,8 +1597,8 @@ static inline abi_long target_to_host_cmsg(struct msghdr *msgh, __get_user(cred->uid, &target_cred->uid); __get_user(cred->gid, &target_cred->gid); } else { - gemu_log("Unsupported ancillary data: %d/%d\n", - cmsg->cmsg_level, cmsg->cmsg_type); + qemu_log_mask(LOG_UNIMP, "Unsupported ancillary data: %d/%d\n", + cmsg->cmsg_level, cmsg->cmsg_type); memcpy(data, target_data, len); } @@ -1815,8 +1819,8 @@ static inline abi_long host_to_target_cmsg(struct target_msghdr *target_msgh, default: unimplemented: - gemu_log("Unsupported ancillary data: %d/%d\n", - cmsg->cmsg_level, cmsg->cmsg_type); + qemu_log_mask(LOG_UNIMP, "Unsupported ancillary data: %d/%d\n", + cmsg->cmsg_level, cmsg->cmsg_type); memcpy(target_data, data, MIN(len, tgt_len)); if (tgt_len > len) { memset(target_data + len, 0, tgt_len - len); @@ -2291,7 +2295,8 @@ set_timeout: #endif /* SOL_NETLINK */ default: unimplemented: - gemu_log("Unsupported setsockopt level=%d optname=%d\n", level, optname); + qemu_log_mask(LOG_UNIMP, "Unsupported setsockopt level=%d optname=%d\n", + level, optname); ret = -TARGET_ENOPROTOOPT; } return ret; @@ -2698,8 +2703,9 @@ get_timeout: #endif /* SOL_NETLINK */ default: unimplemented: - gemu_log("getsockopt level=%d optname=%d not yet supported\n", - level, optname); + qemu_log_mask(LOG_UNIMP, + "getsockopt level=%d optname=%d not yet supported\n", + level, optname); ret = -TARGET_EOPNOTSUPP; break; } @@ -3454,7 +3460,7 @@ static abi_long do_socketcall(int num, abi_ulong vptr) case TARGET_SYS_SENDMMSG: /* sockfd, msgvec, vlen, flags */ return do_sendrecvmmsg(a[0], a[1], a[2], a[3], 1); default: - gemu_log("Unsupported socketcall: %d\n", num); + qemu_log_mask(LOG_UNIMP, "Unsupported socketcall: %d\n", num); return -TARGET_EINVAL; } } @@ -4365,7 +4371,8 @@ static abi_long do_ipc(CPUArchState *cpu_env, ret = do_shmctl(first, second, ptr); break; default: - gemu_log("Unsupported ipc call: %d (version %d)\n", call, version); + qemu_log_mask(LOG_UNIMP, "Unsupported ipc call: %d (version %d)\n", + call, version); ret = -TARGET_ENOSYS; break; } @@ -5213,7 +5220,8 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg) ie = ioctl_entries; for(;;) { if (ie->target_cmd == 0) { - gemu_log("Unsupported ioctl: cmd=0x%04lx\n", (long)cmd); + qemu_log_mask( + LOG_UNIMP, "Unsupported ioctl: cmd=0x%04lx\n", (long)cmd); return -TARGET_ENOSYS; } if (ie->target_cmd == cmd) @@ -5281,8 +5289,9 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg) } break; default: - gemu_log("Unsupported ioctl type: cmd=0x%04lx type=%d\n", - (long)cmd, arg_type[0]); + qemu_log_mask(LOG_UNIMP, + "Unsupported ioctl type: cmd=0x%04lx type=%d\n", + (long)cmd, arg_type[0]); ret = -TARGET_ENOSYS; break; } diff --git a/linux-user/vm86.c b/linux-user/vm86.c index 2fa7a89edc4e..4412522c4c4e 100644 --- a/linux-user/vm86.c +++ b/linux-user/vm86.c @@ -402,7 +402,8 @@ int do_vm86(CPUX86State *env, long subfunction, abi_ulong vm86_addr) case TARGET_VM86_FREE_IRQ: case TARGET_VM86_GET_IRQ_BITS: case TARGET_VM86_GET_AND_RESET_IRQ: - gemu_log("qemu: unsupported vm86 subfunction (%ld)\n", subfunction); + qemu_log_mask(LOG_UNIMP, "qemu: unsupported vm86 subfunction (%ld)\n", + subfunction); ret = -TARGET_EINVAL; goto out; case TARGET_VM86_PLUS_INSTALL_CHECK: From patchwork Thu Feb 20 09:20:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393661 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D0688109A for ; Thu, 20 Feb 2020 09:29:22 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9141120801 for ; Thu, 20 Feb 2020 09:29:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9141120801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38518 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i93-0002Fj-R5 for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:29:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51954) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1m-0004aX-EY for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1i-0008Fe-5i for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:50 -0500 Received: from mout.kundenserver.de ([217.72.192.73]:34301) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1h-0008FH-Kh for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:46 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MKc0o-1ijjDV1Ebc-00KxIc; Thu, 20 Feb 2020 10:21:02 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 07/13] linux-user: Use `qemu_log' for strace Date: Thu, 20 Feb 2020 10:20:47 +0100 Message-Id: <20200220092053.1510215-8-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:GjdLgy9xvAWLXmZ7yrH6A6VL3e3+sM5D5Z3ko4lQsgGAOTV0W7o ImysjbsmNx/hsTQxnjj41C6+xjV+TjRpZsMKqThdptivFnFWPaE4zwi3SWc2ObzgPXFPtrJ M8uDQDVP78pNDAo/KOtkaL3H5tDwFvZpe3eY6/lFqnhQWiQ4DdTV4+TPmHee9enhbmnzDEI EX5qRTaBabqb1VkNhxE9w== X-UI-Out-Filterresults: notjunk:1;V03:K0:vDhH1Ymz0rM=:sBrhzgRi6L1+lpNyxayWvZ iccV9qK+IlYmJ25zAJLVWiZnsyb9QHLYpzZO2HtRJUxM6g4W7JpRgtMmv5lk3TpGnZ1gTokWw tmB0txz2PVeIc4WAPoTTyD2B9OkDWFmhRRmWebuhwIHxkYlArrJX2nx3Bd3yQHBjWXVyJiT9a PDSUhdw4CZsKFqzRfo6aswe1USW54jU2jiUB4DhfctZF+tHTeU7mpMKGVSH8ydv3PRMBsuA4u /oC6njBA+4KUKRqDs5wg8O0zfVAL+0NgbzE4UGenR6WNkiISpql8RZy3a4duhxj1yH+9QMeU6 gntMKqsFDXwQmJwxFl3RM4ljI/dknKZ9QxTBlR3lWeM0nIBwO0Z+W3yf/4hKcgDkIv/Yolqc8 X/QD5pE9UejiRIyIrbxymtmzWZmgIYj0SKCtAZeakooDS8WenrIySKpFX5lCpNYwx/LfN1Lnw 16bt/6DMYQX5rRcHRRmgntlPyBSU3RRVdQ4lh9yPKaX6q3C37/xFNDfDLcBVhLuyrkZrb0pjl n2ZheXehHexYRhNjYvIBfUiIb+FE0mtisy0gW0SncxswPGTumsV5JgnTueJL3XGZ/C1nR8Ci3 s3PYD1krpZ0EwxtgC1hCCVbdb0pPJXLLYjMEYGoszFKqWJQQko5+nZbFrcJUeyzIp5L8Z9Xt3 QKWNnIZaki0kCDh/DidJwoUDJeR+cn/rMCExv18AURJs/gYw97hLf+Gi1XrrM7Da0f/SG1PBk fkU89g7DRWZbqfFitx8o4fF5O9e5pKCHgodlhu6By1FuH+uK6pW12VSj++Q0cPZkCNv15JOGk 4CioSVOhgLUlxmo/A8j7/XefrWS9egJANRB+xzd2fkEvMfH0TESNDgKM7jrFiQ+ynBbyK9A X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.73 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier , Josh Kunz , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Josh Kunz This change switches linux-user strace logging to use the newer `qemu_log` logging subsystem rather than the older `gemu_log` (notice the "g") logger. `qemu_log` has several advantages, namely that it allows logging to a file, and provides a more unified interface for configuration of logging (via the QEMU_LOG environment variable or options). This change introduces a new log mask: `LOG_STRACE` which is used for logging of user-mode strace messages. Reviewed-by: Laurent Vivier Signed-off-by: Josh Kunz Message-Id: <20200204025416.111409-3-jkz@google.com> Signed-off-by: Laurent Vivier --- include/qemu/log.h | 2 + linux-user/main.c | 30 ++- linux-user/qemu.h | 1 - linux-user/signal.c | 2 +- linux-user/strace.c | 479 ++++++++++++++++++++++--------------------- linux-user/syscall.c | 13 +- util/log.c | 2 + 7 files changed, 278 insertions(+), 251 deletions(-) diff --git a/include/qemu/log.h b/include/qemu/log.h index e0f4e4062838..f4724f733011 100644 --- a/include/qemu/log.h +++ b/include/qemu/log.h @@ -62,6 +62,8 @@ static inline bool qemu_log_separate(void) #define CPU_LOG_TB_OP_IND (1 << 16) #define CPU_LOG_TB_FPU (1 << 17) #define CPU_LOG_PLUGIN (1 << 18) +/* LOG_STRACE is used for user-mode strace logging. */ +#define LOG_STRACE (1 << 19) /* Lock output for a series of related logs. Since this is not needed * for a single qemu_log / qemu_log_mask / qemu_log_mask_and_addr, we diff --git a/linux-user/main.c b/linux-user/main.c index fba833aac918..8f1d07cdd6a7 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -60,6 +60,19 @@ unsigned long mmap_min_addr; unsigned long guest_base; int have_guest_base; +/* + * Used to implement backwards-compatibility for the `-strace`, and + * QEMU_STRACE options. Without this, the QEMU_LOG can be overwritten by + * -strace, or vice versa. + */ +static bool enable_strace; + +/* + * The last log mask given by the user in an environment variable or argument. + * Used to support command line arguments overriding environment variables. + */ +static int last_log_mask; + /* * When running 32-on-64 we should make sure we can fit all of the possible * guest address space into a contiguous chunk of virtual host memory. @@ -223,15 +236,11 @@ static void handle_arg_help(const char *arg) static void handle_arg_log(const char *arg) { - int mask; - - mask = qemu_str_to_log_mask(arg); - if (!mask) { + last_log_mask = qemu_str_to_log_mask(arg); + if (!last_log_mask) { qemu_print_log_usage(stdout); exit(EXIT_FAILURE); } - qemu_log_needs_buffers(); - qemu_set_log(mask); } static void handle_arg_dfilter(const char *arg) @@ -375,7 +384,7 @@ static void handle_arg_singlestep(const char *arg) static void handle_arg_strace(const char *arg) { - do_strace = 1; + enable_strace = true; } static void handle_arg_version(const char *arg) @@ -629,6 +638,7 @@ int main(int argc, char **argv, char **envp) int i; int ret; int execfd; + int log_mask; unsigned long max_reserved_va; error_init(argv[0]); @@ -661,6 +671,12 @@ int main(int argc, char **argv, char **envp) optind = parse_args(argc, argv); + log_mask = last_log_mask | (enable_strace ? LOG_STRACE : 0); + if (log_mask) { + qemu_log_needs_buffers(); + qemu_set_log(log_mask); + } + if (!trace_init_backends()) { exit(1); } diff --git a/linux-user/qemu.h b/linux-user/qemu.h index 560a68090e14..2421dc7afd7a 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -386,7 +386,6 @@ void print_syscall_ret(int num, abi_long arg1); * --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} --- */ void print_taken_signal(int target_signum, const target_siginfo_t *tinfo); -extern int do_strace; /* signal.c */ void process_pending_signals(CPUArchState *cpu_env); diff --git a/linux-user/signal.c b/linux-user/signal.c index 94259dd07064..8cf51ffecde6 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -934,7 +934,7 @@ static void handle_pending_signal(CPUArchState *cpu_env, int sig, handler = sa->_sa_handler; } - if (do_strace) { + if (unlikely(qemu_loglevel_mask(LOG_STRACE))) { print_taken_signal(sig, &k->info); } diff --git a/linux-user/strace.c b/linux-user/strace.c index 3d4d6844500e..4f7130b2ff63 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -12,8 +12,6 @@ #include #include "qemu.h" -int do_strace=0; - struct syscallname { int nr; const char *name; @@ -80,7 +78,7 @@ print_ipc_cmd(int cmd) { #define output_cmd(val) \ if( cmd == val ) { \ - gemu_log(#val); \ + qemu_log(#val); \ return; \ } @@ -120,7 +118,7 @@ if( cmd == val ) { \ output_cmd( IPC_RMID ); /* Some value we don't recognize */ - gemu_log("%d",cmd); + qemu_log("%d", cmd); } static void @@ -151,7 +149,7 @@ print_signal(abi_ulong arg, int last) print_raw_param("%ld", arg, last); return; } - gemu_log("%s%s", signal_name, get_comma(last)); + qemu_log("%s%s", signal_name, get_comma(last)); } static void print_si_code(int arg) @@ -184,10 +182,10 @@ static void print_si_code(int arg) codename = "SI_TKILL"; break; default: - gemu_log("%d", arg); + qemu_log("%d", arg); return; } - gemu_log("%s", codename); + qemu_log("%s", codename); } static void get_target_siginfo(target_siginfo_t *tinfo, @@ -288,33 +286,33 @@ static void print_siginfo(const target_siginfo_t *tinfo) int si_type = extract32(tinfo->si_code, 16, 16); int si_code = sextract32(tinfo->si_code, 0, 16); - gemu_log("{si_signo="); + qemu_log("{si_signo="); print_signal(tinfo->si_signo, 1); - gemu_log(", si_code="); + qemu_log(", si_code="); print_si_code(si_code); switch (si_type) { case QEMU_SI_KILL: - gemu_log(", si_pid=%u, si_uid=%u", + qemu_log(", si_pid=%u, si_uid=%u", (unsigned int)tinfo->_sifields._kill._pid, (unsigned int)tinfo->_sifields._kill._uid); break; case QEMU_SI_TIMER: - gemu_log(", si_timer1=%u, si_timer2=%u", + qemu_log(", si_timer1=%u, si_timer2=%u", tinfo->_sifields._timer._timer1, tinfo->_sifields._timer._timer2); break; case QEMU_SI_POLL: - gemu_log(", si_band=%d, si_fd=%d", + qemu_log(", si_band=%d, si_fd=%d", tinfo->_sifields._sigpoll._band, tinfo->_sifields._sigpoll._fd); break; case QEMU_SI_FAULT: - gemu_log(", si_addr="); + qemu_log(", si_addr="); print_pointer(tinfo->_sifields._sigfault._addr, 1); break; case QEMU_SI_CHLD: - gemu_log(", si_pid=%u, si_uid=%u, si_status=%d" + qemu_log(", si_pid=%u, si_uid=%u, si_status=%d" ", si_utime=" TARGET_ABI_FMT_ld ", si_stime=" TARGET_ABI_FMT_ld, (unsigned int)(tinfo->_sifields._sigchld._pid), @@ -324,7 +322,7 @@ static void print_siginfo(const target_siginfo_t *tinfo) tinfo->_sifields._sigchld._stime); break; case QEMU_SI_RT: - gemu_log(", si_pid=%u, si_uid=%u, si_sigval=" TARGET_ABI_FMT_ld, + qemu_log(", si_pid=%u, si_uid=%u, si_sigval=" TARGET_ABI_FMT_ld, (unsigned int)tinfo->_sifields._rt._pid, (unsigned int)tinfo->_sifields._rt._uid, tinfo->_sifields._rt._sigval.sival_ptr); @@ -332,7 +330,7 @@ static void print_siginfo(const target_siginfo_t *tinfo) default: g_assert_not_reached(); } - gemu_log("}"); + qemu_log("}"); } static void @@ -349,76 +347,76 @@ print_sockaddr(abi_ulong addr, abi_long addrlen, int last) case AF_UNIX: { struct target_sockaddr_un *un = (struct target_sockaddr_un *)sa; int i; - gemu_log("{sun_family=AF_UNIX,sun_path=\""); + qemu_log("{sun_family=AF_UNIX,sun_path=\""); for (i = 0; i < addrlen - offsetof(struct target_sockaddr_un, sun_path) && un->sun_path[i]; i++) { - gemu_log("%c", un->sun_path[i]); + qemu_log("%c", un->sun_path[i]); } - gemu_log("\"}"); + qemu_log("\"}"); break; } case AF_INET: { struct target_sockaddr_in *in = (struct target_sockaddr_in *)sa; uint8_t *c = (uint8_t *)&in->sin_addr.s_addr; - gemu_log("{sin_family=AF_INET,sin_port=htons(%d),", + qemu_log("{sin_family=AF_INET,sin_port=htons(%d),", ntohs(in->sin_port)); - gemu_log("sin_addr=inet_addr(\"%d.%d.%d.%d\")", + qemu_log("sin_addr=inet_addr(\"%d.%d.%d.%d\")", c[0], c[1], c[2], c[3]); - gemu_log("}"); + qemu_log("}"); break; } case AF_PACKET: { struct target_sockaddr_ll *ll = (struct target_sockaddr_ll *)sa; uint8_t *c = (uint8_t *)&ll->sll_addr; - gemu_log("{sll_family=AF_PACKET," + qemu_log("{sll_family=AF_PACKET," "sll_protocol=htons(0x%04x),if%d,pkttype=", ntohs(ll->sll_protocol), ll->sll_ifindex); switch (ll->sll_pkttype) { case PACKET_HOST: - gemu_log("PACKET_HOST"); + qemu_log("PACKET_HOST"); break; case PACKET_BROADCAST: - gemu_log("PACKET_BROADCAST"); + qemu_log("PACKET_BROADCAST"); break; case PACKET_MULTICAST: - gemu_log("PACKET_MULTICAST"); + qemu_log("PACKET_MULTICAST"); break; case PACKET_OTHERHOST: - gemu_log("PACKET_OTHERHOST"); + qemu_log("PACKET_OTHERHOST"); break; case PACKET_OUTGOING: - gemu_log("PACKET_OUTGOING"); + qemu_log("PACKET_OUTGOING"); break; default: - gemu_log("%d", ll->sll_pkttype); + qemu_log("%d", ll->sll_pkttype); break; } - gemu_log(",sll_addr=%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", + qemu_log(",sll_addr=%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]); - gemu_log("}"); + qemu_log("}"); break; } case AF_NETLINK: { struct target_sockaddr_nl *nl = (struct target_sockaddr_nl *)sa; - gemu_log("{nl_family=AF_NETLINK,nl_pid=%u,nl_groups=%u}", + qemu_log("{nl_family=AF_NETLINK,nl_pid=%u,nl_groups=%u}", tswap32(nl->nl_pid), tswap32(nl->nl_groups)); break; } default: - gemu_log("{sa_family=%d, sa_data={", sa->sa_family); + qemu_log("{sa_family=%d, sa_data={", sa->sa_family); for (i = 0; i < 13; i++) { - gemu_log("%02x, ", sa->sa_data[i]); + qemu_log("%02x, ", sa->sa_data[i]); } - gemu_log("%02x}", sa->sa_data[i]); - gemu_log("}"); + qemu_log("%02x}", sa->sa_data[i]); + qemu_log("}"); break; } unlock_user(sa, addr, 0); } else { print_raw_param("0x"TARGET_ABI_FMT_lx, addr, 0); } - gemu_log(", "TARGET_ABI_FMT_ld"%s", addrlen, get_comma(last)); + qemu_log(", "TARGET_ABI_FMT_ld"%s", addrlen, get_comma(last)); } static void @@ -426,19 +424,19 @@ print_socket_domain(int domain) { switch (domain) { case PF_UNIX: - gemu_log("PF_UNIX"); + qemu_log("PF_UNIX"); break; case PF_INET: - gemu_log("PF_INET"); + qemu_log("PF_INET"); break; case PF_NETLINK: - gemu_log("PF_NETLINK"); + qemu_log("PF_NETLINK"); break; case PF_PACKET: - gemu_log("PF_PACKET"); + qemu_log("PF_PACKET"); break; default: - gemu_log("%d", domain); + qemu_log("%d", domain); break; } } @@ -448,22 +446,22 @@ print_socket_type(int type) { switch (type) { case TARGET_SOCK_DGRAM: - gemu_log("SOCK_DGRAM"); + qemu_log("SOCK_DGRAM"); break; case TARGET_SOCK_STREAM: - gemu_log("SOCK_STREAM"); + qemu_log("SOCK_STREAM"); break; case TARGET_SOCK_RAW: - gemu_log("SOCK_RAW"); + qemu_log("SOCK_RAW"); break; case TARGET_SOCK_RDM: - gemu_log("SOCK_RDM"); + qemu_log("SOCK_RDM"); break; case TARGET_SOCK_SEQPACKET: - gemu_log("SOCK_SEQPACKET"); + qemu_log("SOCK_SEQPACKET"); break; case TARGET_SOCK_PACKET: - gemu_log("SOCK_PACKET"); + qemu_log("SOCK_PACKET"); break; } } @@ -475,10 +473,10 @@ print_socket_protocol(int domain, int type, int protocol) (domain == AF_INET && type == TARGET_SOCK_PACKET)) { switch (protocol) { case 0x0003: - gemu_log("ETH_P_ALL"); + qemu_log("ETH_P_ALL"); break; default: - gemu_log("%d", protocol); + qemu_log("%d", protocol); } return; } @@ -486,25 +484,25 @@ print_socket_protocol(int domain, int type, int protocol) if (domain == PF_NETLINK) { switch (protocol) { case NETLINK_ROUTE: - gemu_log("NETLINK_ROUTE"); + qemu_log("NETLINK_ROUTE"); break; case NETLINK_AUDIT: - gemu_log("NETLINK_AUDIT"); + qemu_log("NETLINK_AUDIT"); break; case NETLINK_NETFILTER: - gemu_log("NETLINK_NETFILTER"); + qemu_log("NETLINK_NETFILTER"); break; case NETLINK_KOBJECT_UEVENT: - gemu_log("NETLINK_KOBJECT_UEVENT"); + qemu_log("NETLINK_KOBJECT_UEVENT"); break; case NETLINK_RDMA: - gemu_log("NETLINK_RDMA"); + qemu_log("NETLINK_RDMA"); break; case NETLINK_CRYPTO: - gemu_log("NETLINK_CRYPTO"); + qemu_log("NETLINK_CRYPTO"); break; default: - gemu_log("%d", protocol); + qemu_log("%d", protocol); break; } return; @@ -512,19 +510,19 @@ print_socket_protocol(int domain, int type, int protocol) switch (protocol) { case IPPROTO_IP: - gemu_log("IPPROTO_IP"); + qemu_log("IPPROTO_IP"); break; case IPPROTO_TCP: - gemu_log("IPPROTO_TCP"); + qemu_log("IPPROTO_TCP"); break; case IPPROTO_UDP: - gemu_log("IPPROTO_UDP"); + qemu_log("IPPROTO_UDP"); break; case IPPROTO_RAW: - gemu_log("IPPROTO_RAW"); + qemu_log("IPPROTO_RAW"); break; default: - gemu_log("%d", protocol); + qemu_log("%d", protocol); break; } } @@ -536,7 +534,7 @@ print_fdset(int n, abi_ulong target_fds_addr) { int i; - gemu_log("["); + qemu_log("["); if( target_fds_addr ) { abi_long *target_fds; @@ -550,11 +548,11 @@ print_fdset(int n, abi_ulong target_fds_addr) for (i=n; i>=0; i--) { if ((tswapal(target_fds[i / TARGET_ABI_BITS]) >> (i & (TARGET_ABI_BITS - 1))) & 1) - gemu_log("%d,", i ); + qemu_log("%d,", i); } unlock_user(target_fds, target_fds_addr, 0); } - gemu_log("]"); + qemu_log("]"); } #endif @@ -578,46 +576,46 @@ print_clockid(int clockid, int last) { switch (clockid) { case TARGET_CLOCK_REALTIME: - gemu_log("CLOCK_REALTIME"); + qemu_log("CLOCK_REALTIME"); break; case TARGET_CLOCK_MONOTONIC: - gemu_log("CLOCK_MONOTONIC"); + qemu_log("CLOCK_MONOTONIC"); break; case TARGET_CLOCK_PROCESS_CPUTIME_ID: - gemu_log("CLOCK_PROCESS_CPUTIME_ID"); + qemu_log("CLOCK_PROCESS_CPUTIME_ID"); break; case TARGET_CLOCK_THREAD_CPUTIME_ID: - gemu_log("CLOCK_THREAD_CPUTIME_ID"); + qemu_log("CLOCK_THREAD_CPUTIME_ID"); break; case TARGET_CLOCK_MONOTONIC_RAW: - gemu_log("CLOCK_MONOTONIC_RAW"); + qemu_log("CLOCK_MONOTONIC_RAW"); break; case TARGET_CLOCK_REALTIME_COARSE: - gemu_log("CLOCK_REALTIME_COARSE"); + qemu_log("CLOCK_REALTIME_COARSE"); break; case TARGET_CLOCK_MONOTONIC_COARSE: - gemu_log("CLOCK_MONOTONIC_COARSE"); + qemu_log("CLOCK_MONOTONIC_COARSE"); break; case TARGET_CLOCK_BOOTTIME: - gemu_log("CLOCK_BOOTTIME"); + qemu_log("CLOCK_BOOTTIME"); break; case TARGET_CLOCK_REALTIME_ALARM: - gemu_log("CLOCK_REALTIME_ALARM"); + qemu_log("CLOCK_REALTIME_ALARM"); break; case TARGET_CLOCK_BOOTTIME_ALARM: - gemu_log("CLOCK_BOOTTIME_ALARM"); + qemu_log("CLOCK_BOOTTIME_ALARM"); break; case TARGET_CLOCK_SGI_CYCLE: - gemu_log("CLOCK_SGI_CYCLE"); + qemu_log("CLOCK_SGI_CYCLE"); break; case TARGET_CLOCK_TAI: - gemu_log("CLOCK_TAI"); + qemu_log("CLOCK_TAI"); break; default: - gemu_log("%d", clockid); + qemu_log("%d", clockid); break; } - gemu_log("%s", get_comma(last)); + qemu_log("%s", get_comma(last)); } #endif @@ -638,15 +636,15 @@ print_newselect(const struct syscallname *name, abi_long arg1, abi_long arg2, abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6) { - gemu_log("%s(" TARGET_ABI_FMT_ld ",", name->name, arg1); + qemu_log("%s(" TARGET_ABI_FMT_ld ",", name->name, arg1); print_fdset(arg1, arg2); - gemu_log(","); + qemu_log(","); print_fdset(arg1, arg3); - gemu_log(","); + qemu_log(","); print_fdset(arg1, arg4); - gemu_log(","); + qemu_log(","); print_timeval(arg5, 1); - gemu_log(")"); + qemu_log(")"); /* save for use in the return output function below */ newselect_arg1=arg1; @@ -663,9 +661,10 @@ print_semctl(const struct syscallname *name, abi_long arg1, abi_long arg2, abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6) { - gemu_log("%s(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ",", name->name, arg1, arg2); + qemu_log("%s(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ",", + name->name, arg1, arg2); print_ipc_cmd(arg3); - gemu_log(",0x" TARGET_ABI_FMT_lx ")", arg4); + qemu_log(",0x" TARGET_ABI_FMT_lx ")", arg4); } #endif @@ -679,7 +678,7 @@ print_execve(const struct syscallname *name, if (!(s = lock_user_string(arg1))) return; - gemu_log("%s(\"%s\",{", name->name, s); + qemu_log("%s(\"%s\",{", name->name, s); unlock_user(s, arg1, 0); for (arg_ptr_addr = arg2; ; arg_ptr_addr += sizeof(abi_ulong)) { @@ -693,12 +692,12 @@ print_execve(const struct syscallname *name, if (!arg_addr) break; if ((s = lock_user_string(arg_addr))) { - gemu_log("\"%s\",", s); + qemu_log("\"%s\",", s); unlock_user(s, arg_addr, 0); } } - gemu_log("NULL})"); + qemu_log("NULL})"); } #ifdef TARGET_NR_ipc @@ -709,12 +708,18 @@ print_ipc(const struct syscallname *name, { switch(arg1) { case IPCOP_semctl: - gemu_log("semctl(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ",", arg1, arg2); + qemu_log("semctl(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ",", + arg1, arg2); print_ipc_cmd(arg3); - gemu_log(",0x" TARGET_ABI_FMT_lx ")", arg4); + qemu_log(",0x" TARGET_ABI_FMT_lx ")", arg4); break; default: - gemu_log("%s(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ")", + qemu_log(("%s(" + TARGET_ABI_FMT_ld "," + TARGET_ABI_FMT_ld "," + TARGET_ABI_FMT_ld "," + TARGET_ABI_FMT_ld + ")"), name->name, arg1, arg2, arg3, arg4); } } @@ -733,9 +738,9 @@ print_syscall_ret_addr(const struct syscallname *name, abi_long ret) errstr = target_strerror(-ret); } if (errstr) { - gemu_log(" = -1 errno=%d (%s)\n", (int)-ret, errstr); + qemu_log(" = -1 errno=%d (%s)\n", (int)-ret, errstr); } else { - gemu_log(" = 0x" TARGET_ABI_FMT_lx "\n", ret); + qemu_log(" = 0x" TARGET_ABI_FMT_lx "\n", ret); } } @@ -743,7 +748,7 @@ print_syscall_ret_addr(const struct syscallname *name, abi_long ret) static void print_syscall_ret_raw(struct syscallname *name, abi_long ret) { - gemu_log(" = 0x" TARGET_ABI_FMT_lx "\n", ret); + qemu_log(" = 0x" TARGET_ABI_FMT_lx "\n", ret); } #endif @@ -751,15 +756,15 @@ print_syscall_ret_raw(struct syscallname *name, abi_long ret) static void print_syscall_ret_newselect(const struct syscallname *name, abi_long ret) { - gemu_log(" = 0x" TARGET_ABI_FMT_lx " (", ret); + qemu_log(" = 0x" TARGET_ABI_FMT_lx " (", ret); print_fdset(newselect_arg1,newselect_arg2); - gemu_log(","); + qemu_log(","); print_fdset(newselect_arg1,newselect_arg3); - gemu_log(","); + qemu_log(","); print_fdset(newselect_arg1,newselect_arg4); - gemu_log(","); + qemu_log(","); print_timeval(newselect_arg5, 1); - gemu_log(")\n"); + qemu_log(")\n"); } #endif @@ -775,38 +780,38 @@ print_syscall_ret_adjtimex(const struct syscallname *name, abi_long ret) { const char *errstr = NULL; - gemu_log(" = "); + qemu_log(" = "); if (ret < 0) { - gemu_log("-1 errno=%d", errno); + qemu_log("-1 errno=%d", errno); errstr = target_strerror(-ret); if (errstr) { - gemu_log(" (%s)", errstr); + qemu_log(" (%s)", errstr); } } else { - gemu_log(TARGET_ABI_FMT_ld, ret); + qemu_log(TARGET_ABI_FMT_ld, ret); switch (ret) { case TARGET_TIME_OK: - gemu_log(" TIME_OK (clock synchronized, no leap second)"); + qemu_log(" TIME_OK (clock synchronized, no leap second)"); break; case TARGET_TIME_INS: - gemu_log(" TIME_INS (insert leap second)"); + qemu_log(" TIME_INS (insert leap second)"); break; case TARGET_TIME_DEL: - gemu_log(" TIME_DEL (delete leap second)"); + qemu_log(" TIME_DEL (delete leap second)"); break; case TARGET_TIME_OOP: - gemu_log(" TIME_OOP (leap second in progress)"); + qemu_log(" TIME_OOP (leap second in progress)"); break; case TARGET_TIME_WAIT: - gemu_log(" TIME_WAIT (leap second has occurred)"); + qemu_log(" TIME_WAIT (leap second has occurred)"); break; case TARGET_TIME_ERROR: - gemu_log(" TIME_ERROR (clock not synchronized)"); + qemu_log(" TIME_ERROR (clock not synchronized)"); break; } } - gemu_log("\n"); + qemu_log("\n"); } UNUSED static struct flags access_flags[] = { @@ -1104,12 +1109,12 @@ print_flags(const struct flags *f, abi_long flags, int last) int n; if ((flags == 0) && (f->f_value == 0)) { - gemu_log("%s%s", f->f_string, get_comma(last)); + qemu_log("%s%s", f->f_string, get_comma(last)); return; } for (n = 0; f->f_string != NULL; f++) { if ((f->f_value != 0) && ((flags & f->f_value) == f->f_value)) { - gemu_log("%s%s", sep, f->f_string); + qemu_log("%s%s", sep, f->f_string); flags &= ~f->f_value; sep = "|"; n++; @@ -1119,13 +1124,13 @@ print_flags(const struct flags *f, abi_long flags, int last) if (n > 0) { /* print rest of the flags as numeric */ if (flags != 0) { - gemu_log("%s%#x%s", sep, (unsigned int)flags, get_comma(last)); + qemu_log("%s%#x%s", sep, (unsigned int)flags, get_comma(last)); } else { - gemu_log("%s", get_comma(last)); + qemu_log("%s", get_comma(last)); } } else { /* no string version of flags found, print them in hex then */ - gemu_log("%#x%s", (unsigned int)flags, get_comma(last)); + qemu_log("%#x%s", (unsigned int)flags, get_comma(last)); } } @@ -1134,11 +1139,11 @@ print_at_dirfd(abi_long dirfd, int last) { #ifdef AT_FDCWD if (dirfd == AT_FDCWD) { - gemu_log("AT_FDCWD%s", get_comma(last)); + qemu_log("AT_FDCWD%s", get_comma(last)); return; } #endif - gemu_log("%d%s", (int)dirfd, get_comma(last)); + qemu_log("%d%s", (int)dirfd, get_comma(last)); } static void @@ -1149,7 +1154,7 @@ print_file_mode(abi_long mode, int last) for (m = &mode_flags[0]; m->f_string != NULL; m++) { if ((m->f_value & mode) == m->f_value) { - gemu_log("%s%s", m->f_string, sep); + qemu_log("%s%s", m->f_string, sep); sep = "|"; mode &= ~m->f_value; break; @@ -1159,9 +1164,9 @@ print_file_mode(abi_long mode, int last) mode &= ~S_IFMT; /* print rest of the mode as octal */ if (mode != 0) - gemu_log("%s%#o", sep, (unsigned int)mode); + qemu_log("%s%#o", sep, (unsigned int)mode); - gemu_log("%s", get_comma(last)); + qemu_log("%s", get_comma(last)); } static void @@ -1170,17 +1175,17 @@ print_open_flags(abi_long flags, int last) print_flags(open_access_flags, flags & TARGET_O_ACCMODE, 1); flags &= ~TARGET_O_ACCMODE; if (flags == 0) { - gemu_log("%s", get_comma(last)); + qemu_log("%s", get_comma(last)); return; } - gemu_log("|"); + qemu_log("|"); print_flags(open_flags, flags, last); } static void print_syscall_prologue(const struct syscallname *sc) { - gemu_log("%s(", sc->name); + qemu_log("%s(", sc->name); } /*ARGSUSED*/ @@ -1188,7 +1193,7 @@ static void print_syscall_epilogue(const struct syscallname *sc) { (void)sc; - gemu_log(")"); + qemu_log(")"); } static void @@ -1197,7 +1202,7 @@ print_string(abi_long addr, int last) char *s; if ((s = lock_user_string(addr)) != NULL) { - gemu_log("\"%s\"%s", s, get_comma(last)); + qemu_log("\"%s\"%s", s, get_comma(last)); unlock_user(s, addr, 0); } else { /* can't get string out of it, so print it as pointer */ @@ -1214,20 +1219,20 @@ print_buf(abi_long addr, abi_long len, int last) s = lock_user(VERIFY_READ, addr, len, 1); if (s) { - gemu_log("\""); + qemu_log("\""); for (i = 0; i < MAX_PRINT_BUF && i < len; i++) { if (isprint(s[i])) { - gemu_log("%c", s[i]); + qemu_log("%c", s[i]); } else { - gemu_log("\\%o", s[i]); + qemu_log("\\%o", s[i]); } } - gemu_log("\""); + qemu_log("\""); if (i != len) { - gemu_log("..."); + qemu_log("..."); } if (!last) { - gemu_log(","); + qemu_log(","); } unlock_user(s, addr, 0); } else { @@ -1245,16 +1250,16 @@ print_raw_param(const char *fmt, abi_long param, int last) char format[64]; (void) snprintf(format, sizeof (format), "%s%s", fmt, get_comma(last)); - gemu_log(format, param); + qemu_log(format, param); } static void print_pointer(abi_long p, int last) { if (p == 0) - gemu_log("NULL%s", get_comma(last)); + qemu_log("NULL%s", get_comma(last)); else - gemu_log("0x" TARGET_ABI_FMT_lx "%s", p, get_comma(last)); + qemu_log("0x" TARGET_ABI_FMT_lx "%s", p, get_comma(last)); } /* @@ -1265,12 +1270,12 @@ static void print_number(abi_long addr, int last) { if (addr == 0) { - gemu_log("NULL%s", get_comma(last)); + qemu_log("NULL%s", get_comma(last)); } else { int num; get_user_s32(num, addr); - gemu_log("[%d]%s", num, get_comma(last)); + qemu_log("[%d]%s", num, get_comma(last)); } } @@ -1285,11 +1290,11 @@ print_timeval(abi_ulong tv_addr, int last) print_pointer(tv_addr, last); return; } - gemu_log("{" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "}%s", + qemu_log("{" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "}%s", tswapal(tv->tv_sec), tswapal(tv->tv_usec), get_comma(last)); unlock_user(tv, tv_addr, 0); } else - gemu_log("NULL%s", get_comma(last)); + qemu_log("NULL%s", get_comma(last)); } static void @@ -1303,11 +1308,11 @@ print_timezone(abi_ulong tz_addr, int last) print_pointer(tz_addr, last); return; } - gemu_log("{%d,%d}%s", tswap32(tz->tz_minuteswest), + qemu_log("{%d,%d}%s", tswap32(tz->tz_minuteswest), tswap32(tz->tz_dsttime), get_comma(last)); unlock_user(tz, tz_addr, 0); } else { - gemu_log("NULL%s", get_comma(last)); + qemu_log("NULL%s", get_comma(last)); } } @@ -1515,83 +1520,83 @@ print_fcntl(const struct syscallname *name, print_raw_param("%d", arg0, 0); switch(arg1) { case TARGET_F_DUPFD: - gemu_log("F_DUPFD,"); + qemu_log("F_DUPFD,"); print_raw_param(TARGET_ABI_FMT_ld, arg2, 1); break; case TARGET_F_GETFD: - gemu_log("F_GETFD"); + qemu_log("F_GETFD"); break; case TARGET_F_SETFD: - gemu_log("F_SETFD,"); + qemu_log("F_SETFD,"); print_raw_param(TARGET_ABI_FMT_ld, arg2, 1); break; case TARGET_F_GETFL: - gemu_log("F_GETFL"); + qemu_log("F_GETFL"); break; case TARGET_F_SETFL: - gemu_log("F_SETFL,"); + qemu_log("F_SETFL,"); print_open_flags(arg2, 1); break; case TARGET_F_GETLK: - gemu_log("F_GETLK,"); + qemu_log("F_GETLK,"); print_pointer(arg2, 1); break; case TARGET_F_SETLK: - gemu_log("F_SETLK,"); + qemu_log("F_SETLK,"); print_pointer(arg2, 1); break; case TARGET_F_SETLKW: - gemu_log("F_SETLKW,"); + qemu_log("F_SETLKW,"); print_pointer(arg2, 1); break; case TARGET_F_GETOWN: - gemu_log("F_GETOWN"); + qemu_log("F_GETOWN"); break; case TARGET_F_SETOWN: - gemu_log("F_SETOWN,"); + qemu_log("F_SETOWN,"); print_raw_param(TARGET_ABI_FMT_ld, arg2, 0); break; case TARGET_F_GETSIG: - gemu_log("F_GETSIG"); + qemu_log("F_GETSIG"); break; case TARGET_F_SETSIG: - gemu_log("F_SETSIG,"); + qemu_log("F_SETSIG,"); print_raw_param(TARGET_ABI_FMT_ld, arg2, 0); break; #if TARGET_ABI_BITS == 32 case TARGET_F_GETLK64: - gemu_log("F_GETLK64,"); + qemu_log("F_GETLK64,"); print_pointer(arg2, 1); break; case TARGET_F_SETLK64: - gemu_log("F_SETLK64,"); + qemu_log("F_SETLK64,"); print_pointer(arg2, 1); break; case TARGET_F_SETLKW64: - gemu_log("F_SETLKW64,"); + qemu_log("F_SETLKW64,"); print_pointer(arg2, 1); break; #endif case TARGET_F_SETLEASE: - gemu_log("F_SETLEASE,"); + qemu_log("F_SETLEASE,"); print_raw_param(TARGET_ABI_FMT_ld, arg2, 0); break; case TARGET_F_GETLEASE: - gemu_log("F_GETLEASE"); + qemu_log("F_GETLEASE"); break; case TARGET_F_SETPIPE_SZ: - gemu_log("F_SETPIPE_SZ,"); + qemu_log("F_SETPIPE_SZ,"); print_raw_param(TARGET_ABI_FMT_ld, arg2, 1); break; case TARGET_F_GETPIPE_SZ: - gemu_log("F_GETPIPE_SZ"); + qemu_log("F_GETPIPE_SZ"); break; case TARGET_F_DUPFD_CLOEXEC: - gemu_log("F_DUPFD_CLOEXEC,"); + qemu_log("F_DUPFD_CLOEXEC,"); print_raw_param(TARGET_ABI_FMT_ld, arg2, 1); break; case TARGET_F_NOTIFY: - gemu_log("F_NOTIFY,"); + qemu_log("F_NOTIFY,"); print_raw_param(TARGET_ABI_FMT_ld, arg2, 0); break; default: @@ -1679,7 +1684,7 @@ print__llseek(const struct syscallname *name, case SEEK_CUR: whence = "SEEK_CUR"; break; case SEEK_END: whence = "SEEK_END"; break; } - gemu_log("%s",whence); + qemu_log("%s", whence); print_syscall_epilogue(name); } #endif @@ -1694,9 +1699,9 @@ print_socket(const struct syscallname *name, print_syscall_prologue(name); print_socket_domain(domain); - gemu_log(","); + qemu_log(","); print_socket_type(type); - gemu_log(","); + qemu_log(","); if (domain == AF_PACKET || (domain == AF_INET && type == TARGET_SOCK_PACKET)) { protocol = tswap16(protocol); @@ -1728,17 +1733,17 @@ static void do_print_socket(const char *name, abi_long arg1) get_user_ualx(domain, arg1, 0); get_user_ualx(type, arg1, 1); get_user_ualx(protocol, arg1, 2); - gemu_log("%s(", name); + qemu_log("%s(", name); print_socket_domain(domain); - gemu_log(","); + qemu_log(","); print_socket_type(type); - gemu_log(","); + qemu_log(","); if (domain == AF_PACKET || (domain == AF_INET && type == TARGET_SOCK_PACKET)) { protocol = tswap16(protocol); } print_socket_protocol(domain, type, protocol); - gemu_log(")"); + qemu_log(")"); } static void do_print_sockaddr(const char *name, abi_long arg1) @@ -1749,10 +1754,10 @@ static void do_print_sockaddr(const char *name, abi_long arg1) get_user_ualx(addr, arg1, 1); get_user_ualx(addrlen, arg1, 2); - gemu_log("%s(", name); + qemu_log("%s(", name); print_sockfd(sockfd, 0); print_sockaddr(addr, addrlen, 0); - gemu_log(")"); + qemu_log(")"); } static void do_print_listen(const char *name, abi_long arg1) @@ -1762,10 +1767,10 @@ static void do_print_listen(const char *name, abi_long arg1) get_user_ualx(sockfd, arg1, 0); get_user_ualx(backlog, arg1, 1); - gemu_log("%s(", name); + qemu_log("%s(", name); print_sockfd(sockfd, 0); print_raw_param(TARGET_ABI_FMT_ld, backlog, 1); - gemu_log(")"); + qemu_log(")"); } static void do_print_socketpair(const char *name, abi_long arg1) @@ -1777,15 +1782,15 @@ static void do_print_socketpair(const char *name, abi_long arg1) get_user_ualx(protocol, arg1, 2); get_user_ualx(tab, arg1, 3); - gemu_log("%s(", name); + qemu_log("%s(", name); print_socket_domain(domain); - gemu_log(","); + qemu_log(","); print_socket_type(type); - gemu_log(","); + qemu_log(","); print_socket_protocol(domain, type, protocol); - gemu_log(","); + qemu_log(","); print_raw_param(TARGET_ABI_FMT_lx, tab, 1); - gemu_log(")"); + qemu_log(")"); } static void do_print_sendrecv(const char *name, abi_long arg1) @@ -1797,12 +1802,12 @@ static void do_print_sendrecv(const char *name, abi_long arg1) get_user_ualx(len, arg1, 2); get_user_ualx(flags, arg1, 3); - gemu_log("%s(", name); + qemu_log("%s(", name); print_sockfd(sockfd, 0); print_buf(msg, len, 0); print_raw_param(TARGET_ABI_FMT_ld, len, 0); print_flags(msg_flags, flags, 1); - gemu_log(")"); + qemu_log(")"); } static void do_print_msgaddr(const char *name, abi_long arg1) @@ -1816,13 +1821,13 @@ static void do_print_msgaddr(const char *name, abi_long arg1) get_user_ualx(addr, arg1, 4); get_user_ualx(addrlen, arg1, 5); - gemu_log("%s(", name); + qemu_log("%s(", name); print_sockfd(sockfd, 0); print_buf(msg, len, 0); print_raw_param(TARGET_ABI_FMT_ld, len, 0); print_flags(msg_flags, flags, 0); print_sockaddr(addr, addrlen, 0); - gemu_log(")"); + qemu_log(")"); } static void do_print_shutdown(const char *name, abi_long arg1) @@ -1832,23 +1837,23 @@ static void do_print_shutdown(const char *name, abi_long arg1) get_user_ualx(sockfd, arg1, 0); get_user_ualx(how, arg1, 1); - gemu_log("shutdown("); + qemu_log("shutdown("); print_sockfd(sockfd, 0); switch (how) { case SHUT_RD: - gemu_log("SHUT_RD"); + qemu_log("SHUT_RD"); break; case SHUT_WR: - gemu_log("SHUT_WR"); + qemu_log("SHUT_WR"); break; case SHUT_RDWR: - gemu_log("SHUT_RDWR"); + qemu_log("SHUT_RDWR"); break; default: print_raw_param(TARGET_ABI_FMT_ld, how, 1); break; } - gemu_log(")"); + qemu_log(")"); } static void do_print_msg(const char *name, abi_long arg1) @@ -1859,11 +1864,11 @@ static void do_print_msg(const char *name, abi_long arg1) get_user_ualx(msg, arg1, 1); get_user_ualx(flags, arg1, 2); - gemu_log("%s(", name); + qemu_log("%s(", name); print_sockfd(sockfd, 0); print_pointer(msg, 0); print_flags(msg_flags, flags, 1); - gemu_log(")"); + qemu_log(")"); } static void do_print_sockopt(const char *name, abi_long arg1) @@ -1876,113 +1881,113 @@ static void do_print_sockopt(const char *name, abi_long arg1) get_user_ualx(optval, arg1, 3); get_user_ualx(optlen, arg1, 4); - gemu_log("%s(", name); + qemu_log("%s(", name); print_sockfd(sockfd, 0); switch (level) { case SOL_TCP: - gemu_log("SOL_TCP,"); + qemu_log("SOL_TCP,"); print_raw_param(TARGET_ABI_FMT_ld, optname, 0); print_pointer(optval, 0); break; case SOL_IP: - gemu_log("SOL_IP,"); + qemu_log("SOL_IP,"); print_raw_param(TARGET_ABI_FMT_ld, optname, 0); print_pointer(optval, 0); break; case SOL_RAW: - gemu_log("SOL_RAW,"); + qemu_log("SOL_RAW,"); print_raw_param(TARGET_ABI_FMT_ld, optname, 0); print_pointer(optval, 0); break; case TARGET_SOL_SOCKET: - gemu_log("SOL_SOCKET,"); + qemu_log("SOL_SOCKET,"); switch (optname) { case TARGET_SO_DEBUG: - gemu_log("SO_DEBUG,"); + qemu_log("SO_DEBUG,"); print_optint: print_number(optval, 0); break; case TARGET_SO_REUSEADDR: - gemu_log("SO_REUSEADDR,"); + qemu_log("SO_REUSEADDR,"); goto print_optint; case TARGET_SO_REUSEPORT: - gemu_log("SO_REUSEPORT,"); + qemu_log("SO_REUSEPORT,"); goto print_optint; case TARGET_SO_TYPE: - gemu_log("SO_TYPE,"); + qemu_log("SO_TYPE,"); goto print_optint; case TARGET_SO_ERROR: - gemu_log("SO_ERROR,"); + qemu_log("SO_ERROR,"); goto print_optint; case TARGET_SO_DONTROUTE: - gemu_log("SO_DONTROUTE,"); + qemu_log("SO_DONTROUTE,"); goto print_optint; case TARGET_SO_BROADCAST: - gemu_log("SO_BROADCAST,"); + qemu_log("SO_BROADCAST,"); goto print_optint; case TARGET_SO_SNDBUF: - gemu_log("SO_SNDBUF,"); + qemu_log("SO_SNDBUF,"); goto print_optint; case TARGET_SO_RCVBUF: - gemu_log("SO_RCVBUF,"); + qemu_log("SO_RCVBUF,"); goto print_optint; case TARGET_SO_KEEPALIVE: - gemu_log("SO_KEEPALIVE,"); + qemu_log("SO_KEEPALIVE,"); goto print_optint; case TARGET_SO_OOBINLINE: - gemu_log("SO_OOBINLINE,"); + qemu_log("SO_OOBINLINE,"); goto print_optint; case TARGET_SO_NO_CHECK: - gemu_log("SO_NO_CHECK,"); + qemu_log("SO_NO_CHECK,"); goto print_optint; case TARGET_SO_PRIORITY: - gemu_log("SO_PRIORITY,"); + qemu_log("SO_PRIORITY,"); goto print_optint; case TARGET_SO_BSDCOMPAT: - gemu_log("SO_BSDCOMPAT,"); + qemu_log("SO_BSDCOMPAT,"); goto print_optint; case TARGET_SO_PASSCRED: - gemu_log("SO_PASSCRED,"); + qemu_log("SO_PASSCRED,"); goto print_optint; case TARGET_SO_TIMESTAMP: - gemu_log("SO_TIMESTAMP,"); + qemu_log("SO_TIMESTAMP,"); goto print_optint; case TARGET_SO_RCVLOWAT: - gemu_log("SO_RCVLOWAT,"); + qemu_log("SO_RCVLOWAT,"); goto print_optint; case TARGET_SO_RCVTIMEO: - gemu_log("SO_RCVTIMEO,"); + qemu_log("SO_RCVTIMEO,"); print_timeval(optval, 0); break; case TARGET_SO_SNDTIMEO: - gemu_log("SO_SNDTIMEO,"); + qemu_log("SO_SNDTIMEO,"); print_timeval(optval, 0); break; case TARGET_SO_ATTACH_FILTER: { struct target_sock_fprog *fprog; - gemu_log("SO_ATTACH_FILTER,"); + qemu_log("SO_ATTACH_FILTER,"); if (lock_user_struct(VERIFY_READ, fprog, optval, 0)) { struct target_sock_filter *filter; - gemu_log("{"); + qemu_log("{"); if (lock_user_struct(VERIFY_READ, filter, tswapal(fprog->filter), 0)) { int i; for (i = 0; i < tswap16(fprog->len) - 1; i++) { - gemu_log("[%d]{0x%x,%d,%d,0x%x},", + qemu_log("[%d]{0x%x,%d,%d,0x%x},", i, tswap16(filter[i].code), filter[i].jt, filter[i].jf, tswap32(filter[i].k)); } - gemu_log("[%d]{0x%x,%d,%d,0x%x}", + qemu_log("[%d]{0x%x,%d,%d,0x%x}", i, tswap16(filter[i].code), filter[i].jt, filter[i].jf, tswap32(filter[i].k)); } else { - gemu_log(TARGET_ABI_FMT_lx, tswapal(fprog->filter)); + qemu_log(TARGET_ABI_FMT_lx, tswapal(fprog->filter)); } - gemu_log(",%d},", tswap16(fprog->len)); + qemu_log(",%d},", tswap16(fprog->len)); unlock_user(fprog, optval, 0); } else { print_pointer(optval, 0); @@ -2002,7 +2007,7 @@ print_optint: break; } print_raw_param(TARGET_ABI_FMT_ld, optlen, 1); - gemu_log(")"); + qemu_log(")"); } #define PRINT_SOCKOP(name, func) \ @@ -2164,7 +2169,7 @@ print_rt_sigprocmask(const struct syscallname *name, case TARGET_SIG_UNBLOCK: how = "SIG_UNBLOCK"; break; case TARGET_SIG_SETMASK: how = "SIG_SETMASK"; break; } - gemu_log("%s,",how); + qemu_log("%s,", how); print_pointer(arg1, 0); print_pointer(arg2, 1); print_syscall_epilogue(name); @@ -2278,7 +2283,7 @@ print_syslog_action(abi_ulong arg, int last) return; } } - gemu_log("%s%s", type, get_comma(last)); + qemu_log("%s%s", type, get_comma(last)); } static void @@ -2683,20 +2688,20 @@ static void print_futex_op(abi_long tflag, int last) { #define print_op(val) \ if( cmd == val ) { \ - gemu_log(#val); \ + qemu_log(#val); \ return; \ } int cmd = (int)tflag; #ifdef FUTEX_PRIVATE_FLAG if (cmd & FUTEX_PRIVATE_FLAG) { - gemu_log("FUTEX_PRIVATE_FLAG|"); + qemu_log("FUTEX_PRIVATE_FLAG|"); cmd &= ~FUTEX_PRIVATE_FLAG; } #endif #ifdef FUTEX_CLOCK_REALTIME if (cmd & FUTEX_CLOCK_REALTIME) { - gemu_log("FUTEX_CLOCK_REALTIME|"); + qemu_log("FUTEX_CLOCK_REALTIME|"); cmd &= ~FUTEX_CLOCK_REALTIME; } #endif @@ -2716,7 +2721,7 @@ if( cmd == val ) { \ print_op(FUTEX_WAKE_BITSET) #endif /* unknown values */ - gemu_log("%d",cmd); + qemu_log("%d", cmd); } static void @@ -2812,22 +2817,24 @@ print_syscall(int num, int i; const char *format="%s(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ")"; - gemu_log("%d ", getpid() ); + qemu_log("%d ", getpid()); for(i=0;i X-Patchwork-Id: 11393641 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4C68F17E0 for ; Thu, 20 Feb 2020 09:24:09 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2BE7420801 for ; Thu, 20 Feb 2020 09:24:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2BE7420801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38424 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i40-0000Ve-C9 for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:24:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51883) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1d-0004HU-Ll for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1c-0008Cc-55 for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:41 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:40855) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1b-0008CE-SA for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:40 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MwgOK-1jO26u3hYA-00y7XU; Thu, 20 Feb 2020 10:21:03 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 08/13] linux-user: remove gemu_log from the linux-user tree Date: Thu, 20 Feb 2020 10:20:48 +0100 Message-Id: <20200220092053.1510215-9-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:jaXcrerx7Sf1J2/KAshvpJej0DPSRikz8QYveZdkx0RE7tkrj+h yP9BDC4x6hRStjBmBASgYcXE31RoL0wLG3uxKypWzO9br/1H/V5L/WcrisCFv30wc6OZI7I pk8FVjVBvK51sjH5utFpL2mniWZCjGJaXAe5+lQnrEzkAZ0t8pbmMr+i46kBkZIm+byZHr2 yf+s9VNKu73PPPSaslqXg== X-UI-Out-Filterresults: notjunk:1;V03:K0:qS/B/DBv5nE=:CzV72reGOi9BJmymo6aidW e8SRuVLTuZQaeZ9AHviErZ+7AZgicJ5nCWTisO4CopukYsDpJ8nr8qx6mlVAsAy8zJV6xaend eUzUqU8FjDFKk/unxnoHc508J/yl6bTXRBEpdAfYfk+dBS+Q1tU0iicceAApdGQTIqXPxx+Gu Q7Hl60HRkgY5QjmBibBDFys/N90A2mbvfwHJMm7PjT7aIrI5IxNZGYC8vo0XJoUXBRCFivZg9 r83BCnMUVFlY5EqPz6zAhdI7Wichryn5IjSXoGMoa5CeIESxuVRr8rYL7+vrf5uvtOaCWDyph TTRx2LXWm/Ayxh1UNrIz3r8BtsSduiGszf0lCB0fn4U3RzVFaLoenqmjrONXKpDliw0Mttc3b RduTtECXzp/qyIrtn+KG/2LzNdZZC+NcRAAMfzYGOInVfkBq5e8D0mtM2yQoAxjVPyT9uP5d+ ImqQIbGqmpTyckzd8R4JmlhGvYzG6n2XMKLXFGIGcOg9e11nHpKaPspLxzx/AMKDVEJdbpVrm GhbZdPvAvp0LIoi5cyiIyABZZu6yeIKborVS4Xc4ubbnyaLDbQEcncyZeBHHegz/fJXFz9nMa NPycAF9DmqtSKFifMFBV3KCGPVMdPM0QwUMHaAu7YNcgkROS7XR+MNb7DSZFiuvfgTIHDKjzE GG1XNwt4DhHkCmvRfccip5NF7imeVYDcfGhXOtoLtwDASa8vOjcRZ/H2KiyhS9SlpjmUawtSk TUZQhuCwEuwmIlFlDIdv4y+VVbpexPBCC/dwQls+T8nzg+uKzmJ0ZgPr/IcFs9x5WIFIE5LmU I5VdUc6WnfFfgWZ/q769YKyD30KajeeWPD4cGbrLzT18t72BBKp4IxTOs2BQtZtYYlNWCzM X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.13 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier , Josh Kunz , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Josh Kunz Now that all uses have been migrated to `qemu_log' it is no longer needed. Reviewed-by: Laurent Vivier Signed-off-by: Josh Kunz Message-Id: <20200204025416.111409-4-jkz@google.com> Signed-off-by: Laurent Vivier --- linux-user/main.c | 9 --------- linux-user/qemu.h | 1 - 2 files changed, 10 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 8f1d07cdd6a7..22578b163364 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -112,15 +112,6 @@ const char *qemu_uname_release; by remapping the process stack directly at the right place */ unsigned long guest_stack_size = 8 * 1024 * 1024UL; -void gemu_log(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); -} - #if defined(TARGET_I386) int cpu_get_pic_interrupt(CPUX86State *env) { diff --git a/linux-user/qemu.h b/linux-user/qemu.h index 2421dc7afd7a..792c74290f8d 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -211,7 +211,6 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, abi_long arg2, abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6, abi_long arg7, abi_long arg8); -void gemu_log(const char *fmt, ...) GCC_FMT_ATTR(1, 2); extern __thread CPUState *thread_cpu; void cpu_loop(CPUArchState *env); const char *target_strerror(int err); From patchwork Thu Feb 20 09:20:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393635 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9C61217F0 for ; Thu, 20 Feb 2020 09:22:29 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7D4092465D for ; Thu, 20 Feb 2020 09:22:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7D4092465D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38402 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i2O-0005p1-Fx for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:22:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51831) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1Y-0004Am-NJ for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1X-00089d-7a for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:36 -0500 Received: from mout.kundenserver.de ([212.227.17.24]:59341) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1W-00088z-VF for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:35 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MulVd-1jM6Au2Cdn-00rowL; Thu, 20 Feb 2020 10:21:03 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 09/13] linux-user: Add support for getting alsa timer version and id Date: Thu, 20 Feb 2020 10:20:49 +0100 Message-Id: <20200220092053.1510215-10-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:VktzNMEVk9unQhdlGz6zUqy6vDEkqd15Fku5KPo/cKBbzRZkcBO Ya4dzWwBBzO995cnyaY/Pxe+mnI+fWyIRoGol+XwymOvy6eHaR6qo1Lad0cYtA+kDdf38G+ DaSwe2FktVGu0bUXQH3SrjCddkRt1tuOG0kTFaXjH4sVqM8qwrMZ+qYh7SU94f3o3u/vwtS /m9EJy50rMTSDycz6MA/w== X-UI-Out-Filterresults: notjunk:1;V03:K0:JPYZZbwfSfE=:QHU43bNIHsGoluuF5/Lj0O VfCMIt/6PrmQSuNSBJLPyi5T8KE+HLRUA886IJpcyuBektw5wkCNUZbx+Ucs3Lvbuq+sx2qyi BBQM0Sygmah27zBTFuOZsCRnh38O1HmZEAyvdakB/zqN6onjlg8s5Jxb3tPW8yo2FQlkSYYhd jMfUWbboCCSV3ORJA8pkOINQOFK+UhgsQsAtpo6gHN0HOR0XDxEVtZjSQoHf/njwlYS0RPjlc 2MkA9SGtJ8toY1CyNVMo/yxyJg2mXSz2jhArBt0yHy0tkM7zeNbIcw3nLC5Z7sGHjTooq2H2m Xf3mYCoxHCGuF/cQrIjHaBo1S4iMQa68kis2wW57tAQPh1OHSPJUVhIWL00yaXs1WJngb9+zX VbWScimHcYZ61bSqOgCyYx2Fbw59dTlqmS68BLqkHIJyPPhcsoMBDH+bzChfU8fWyjG4g/Sl0 N3ftChEbDjzYempu24duLvDZRprrqWIaqhPi2QD5WUiU5W7tQy7OltSgU4xXUhXEqtEXmaXbL NsUpH6duSZUDKyuixNxNCpAvcOJ9170Mc78X6SvSD5B9AoBNLgcvjWCDXFKqgXaOLx4xAd++8 3NYaYktgslewihgDek/AzKGOQ2joif5rHqqih6kJ6AMW2ThR4RqK6RiHRz2xZQDq4ezkEC2nr zyjjMk/Vis0RZsNsLP+Wd/V80jxfaOGVrYDwQOovagY72RHJ8I7X/oqR5Dw4f4wyNI5HBLOGz 9HsCvfNA/aYPuEBeZ6Mxo5YYYPQnBenGlQtPjtTnIvusXgeiAxhafD7uZXrml9qs35xYNBrPP FhTiLBl32S82e8aMSjnxlCJirFobDQu9srvkaoLh90ZjvZlDjBsT4+qJ8+VUZPMH3pbI4Cj X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.24 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier , Filip Bozuta , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Filip Bozuta This patch implements functionalities of following ioctls: SNDRV_TIMER_IOCTL_PVERSION - Getting the sound timer version Read the sound timer version. The third ioctl's argument is a pointer to an int in which the specified timers version is returned. SNDRV_TIMER_IOCTL_NEXT_DEVICE - Getting id information about next timer Read id information about the next timer device from the sound timer device list. The id infomration is returned in the following structure: struct snd_timer_id { int dev_class; /* timer device class number */ int dev_sclass; /* slave device class number (unused) */ int card; /* card number */ int device; /* device number */ int subdevice; /* sub-device number */ }; The devices in the sound timer device list are arranged by the fields of this structure respectively (first by dev_class number, then by card number, ...). A pointer to this structure should be passed as the third ioctl's argument. Before calling the ioctl, the parameters of this structure should be initialized in relation to the next timer device which information is to be obtained. For example, if a wanted timer device has the device class number equal to or bigger then 2, the field dev_class should be initialized to 2. After the ioctl call, the structure fields are filled with values from the next device in the sound timer device list. If there is no next device in the list, the structure is filled with "zero" id values (in that case all fields are filled with value -1). Implementation notes: The ioctl 'SNDRV_TIMER_IOCTL_NEXT_DEVICE' has a pointer to a 'struct snd_timer_id' as its third argument. That is the reason why corresponding definition is added in 'linux-user/syscall_types.h'. Since all elements of this structure are of type 'int', the rest of the implementation was straightforward. The line '#include ' was added to recognize preprocessor definitions for these ioctls. This needs to be done only once in this series of commits. Also, the content of this file (with respect to ioctl definitions) remained unchanged for a long time, therefore there is no need to worry about supporting older Linux kernel version. Reviewed-by: Laurent Vivier Signed-off-by: Filip Bozuta Message-Id: <1579117007-7565-8-git-send-email-Filip.Bozuta@rt-rk.com> Signed-off-by: Laurent Vivier --- linux-user/ioctls.h | 4 ++++ linux-user/syscall.c | 1 + linux-user/syscall_defs.h | 5 +++++ linux-user/syscall_types.h | 7 +++++++ 4 files changed, 17 insertions(+) diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 73dcc761e642..950e99617dcc 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -461,6 +461,10 @@ IOCTL(SOUND_MIXER_WRITE_LOUD, IOC_W, MK_PTR(TYPE_INT)) IOCTL(SOUND_MIXER_WRITE_RECSRC, IOC_W, MK_PTR(TYPE_INT)) + IOCTL(SNDRV_TIMER_IOCTL_PVERSION, IOC_R, MK_PTR(TYPE_INT)) + IOCTL(SNDRV_TIMER_IOCTL_NEXT_DEVICE, IOC_RW, + MK_PTR(MK_STRUCT(STRUCT_snd_timer_id))) + IOCTL(HDIO_GETGEO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_hd_geometry))) IOCTL(HDIO_GET_UNMASKINTR, IOC_R, MK_PTR(TYPE_INT)) IOCTL(HDIO_GET_MULTCOUNT, IOC_R, MK_PTR(TYPE_INT)) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 274e10e0ee6b..8d27d1080752 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -111,6 +111,7 @@ #include #include #include +#include #include "linux_loop.h" #include "uname.h" diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 9b61ae8547dd..eb00358b5437 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2437,6 +2437,11 @@ struct target_statfs64 { #define TARGET_SOUND_MIXER_WRITE_RECSRC TARGET_MIXER_WRITE(SOUND_MIXER_RECSRC) +/* alsa timer ioctls */ +#define TARGET_SNDRV_TIMER_IOCTL_PVERSION TARGET_IOR('T', 0x00, int) +#define TARGET_SNDRV_TIMER_IOCTL_NEXT_DEVICE TARGET_IOWR('T', 0x01, \ + struct snd_timer_id) + /* vfat ioctls */ #define TARGET_VFAT_IOCTL_READDIR_BOTH TARGET_IORU('r', 1) #define TARGET_VFAT_IOCTL_READDIR_SHORT TARGET_IORU('r', 2) diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h index 5ba4155047ba..4c3a65cfc030 100644 --- a/linux-user/syscall_types.h +++ b/linux-user/syscall_types.h @@ -83,6 +83,13 @@ STRUCT(buffmem_desc, STRUCT(mixer_info, MK_ARRAY(TYPE_CHAR, 16), MK_ARRAY(TYPE_CHAR, 32), TYPE_INT, MK_ARRAY(TYPE_INT, 10)) +STRUCT(snd_timer_id, + TYPE_INT, /* dev_class */ + TYPE_INT, /* dev_sclass */ + TYPE_INT, /* card */ + TYPE_INT, /* device */ + TYPE_INT) /* subdevice */ + /* loop device ioctls */ STRUCT(loop_info, TYPE_INT, /* lo_number */ From patchwork Thu Feb 20 09:20:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393657 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0409D109A for ; Thu, 20 Feb 2020 09:28:20 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D8DE020801 for ; Thu, 20 Feb 2020 09:28:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D8DE020801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38506 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i83-0000L6-4c for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:28:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51917) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1f-0004K1-JI for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1d-0008Dg-To for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:43 -0500 Received: from mout.kundenserver.de ([212.227.17.10]:39223) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1d-0008Cw-JT for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:41 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M3DaN-1j1fcD0kDl-003hOh; Thu, 20 Feb 2020 10:21:04 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 10/13] linux-user: Add support for getting/setting specified alsa timer parameters using ioctls Date: Thu, 20 Feb 2020 10:20:50 +0100 Message-Id: <20200220092053.1510215-11-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:HzZhndg5ZHKVQtGiplVuO+I35TBuhPsAh5n9CNPY1976L9HVNdL 5UeozEC33LPx3gaHolxKwdpRWzvta74zaH5DaNvkySdO/CCnwfz6wCI9NW7Q+n9O1/g1+7d VkfC8F4duDh4g9CkB1AfyU2S4iR6S5SBlCJG6mKd9kBQOqS/N3ST7Wb+ociBLLHO+allJ/c uBb3pIuTD6ih85ne4JWKQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:yxFNRAfb7og=:sUFaJHaQpOyAjNsVSKrh2K FCTsK1QW8gwdFK5ApqKjf1KzO3cc19Re1oeXFQ7WdVe3zM2NQOl5tpchSnR0TGIiaLz2xBO5Z GrSTPkrsFAaVX43Sy3q2blmxpDdcrwQpZkI+Jkhj/5pLEQKljYAooTIIpBIOnSH8+bWoeNsR+ iOdKccbfbLt9aEwJ1tJAoqE4z3c1jnAfWYW6DON70GH4GFY4W/WcvX4WL828TLxrkzoUtUXdv nATHrFoWNghkgodrwGRIb8usRUQnELXouzgWDNDR1hXJ5CVDx3wexGRbGFLQwuzQKNrY8mOa7 pTm3kUxuUK2LcSd9VGr8owNL+AfzA0EQygxTLOg8j6yst/kcHAfLsIIfDYfMeggz7M1TC/Y61 hWNpgS6XvdM7RwX/Qk7zP0oR3nmsSUn9vuDLjfNf2rol7h0RhFlFKn6Bz3LQSa65m1+zdizsi bVJEb2anmP8NUfY6dsXfO6a+FkVyO9KYpKSQvBcnZ0iac87vSoYHFExsafGN+Pkmhlbo8lnZj Z2f08TaXiUy7+zPhdSyWfN57Q0fwn9LbW6qhcFkBH/Ikr+v3N58IZQ5Mts2dvyaq4tKbnOxPN MUVs8s5nzWcg9yNCXdKe2ISBB8IjrE01ItOiFsiWs8x8Yu9S7rIE5w/0gB3FdYHCBAMrSAtMt AI6ZopNyO8U2FFdkANlIIHvXU6RX/MdQjUcPdJrkeDvAfAzcjgP320XOeLu7Zu1b1/3U0LRrG xsi+69UYq5XiuYpDU5yeyhBZdxx/AAalPisR9E0rIRO9NlxD6s2IdaFJEDah8hu6nH/dBPBV9 l9FFv3NmLHWh8JkQeSauzvCVNDBU3j34VjSB14VR8Q3Fb3F5lMnvaCBQrqUmdabtahh4ZDO X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.10 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier , Filip Bozuta , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Filip Bozuta This patch implements functionalities of following ioctls: SNDRV_TIMER_IOCTL_GINFO - Getting information about specified timer Read information about the specified timer. The information about the timer is returned in the following structure: struct snd_timer_ginfo { struct snd_timer_id tid; /* requested timer ID */ unsigned int flags; /* timer flags - SNDRV_TIMER_FLG_* */ int card; /* card number */ unsigned char id[64]; /* timer identification */ unsigned char name[80]; /* timer name */ unsigned long reserved0; /* reserved for future use */ unsigned long resolution; /* average period resolution in ns */ unsigned long resolution_min; /* minimal period resolution in ns */ unsigned long resolution_max; /* maximal period resolution in ns */ unsigned int clients; /* active timer clients */ unsigned char reserved[32]; /* reserved */ }; A pointer to this structure should be passed as the third ioctl's argument. Before calling the ioctl, the field "tid" should be initialized with the id information for the timer which information is to be obtained. After the ioctl call, the rest of the structure fields are filled with values from the timer device with the specified id. If there is no device with the specified id, the error ENODEV ("No such device") is returned. SNDRV_TIMER_IOCTL_GPARAMS - Setting precise period duration Sets timer precise period duration numerator and denominator in seconds. The period duration is set in the following structure: struct snd_timer_gparams { struct snd_timer_id tid; /* requested timer ID */ unsigned long period_num; /* period duration - numerator */ unsigned long period_den; /* period duration - denominator */ unsigned char reserved[32]; /* reserved */ }; A pointer to this structure should be passed as the third ioctl's argument. Before calling the ioctl, the field "tid" should be initialized with the id information for the timer which period duration is to be set. Also, the fileds "period_num" and "period_den" should be filled with the period duration numerator and denominator values that are to be set respectively. If there is no device with the specified id, the error ENODEV ("No such device") is returned. SNDRV_TIMER_IOCTL_GSTATUS - Getting current period resolution Read timer current period resolution in nanoseconds and period resolution numerator and denominator in seconds. The period resolution information is returned in the following structure: struct snd_timer_gstatus { struct snd_timer_id tid; /* requested timer ID */ unsigned long resolution; /* current period resolution in ns */ unsigned long resolution_num; /* period resolution - numerator */ unsigned long resolution_den; /* period resolution - denominator */ unsigned char reserved[32]; /* reserved for future use */ }; A pointer to this structure should be passed as the third ioctl's argument. Before calling the ioctl, the field "tid" should be initialized with the id information for the timer which period resolution is to be obtained. After the ioctl call, the rest of the structure fields are filled with values from the timer device with the specified id. If there is no device with the specified id, the error ENODEV ("No such device") is returned. Implementation notes: All ioctls in this patch have pointer to some kind of a structure as their third argument. That is the reason why corresponding definitions were added in 'linux-user/syscall_types.h'. All of these strcutures have some fields that are of type 'unsigned long'. That is the reason why separate target structures were defined in 'linux-user/syscall_defs.h'. Also, all of the structures have a field with type 'struct snd_timer_id' which is the reason why a separate target structure 'struct target_snd_timer_id' was also defined. The rest of the implementation was straightforward. Reviewed-by: Laurent Vivier Signed-off-by: Filip Bozuta Message-Id: <1579117007-7565-10-git-send-email-Filip.Bozuta@rt-rk.com> Signed-off-by: Laurent Vivier --- linux-user/ioctls.h | 6 ++++++ linux-user/syscall_defs.h | 43 ++++++++++++++++++++++++++++++++++++++ linux-user/syscall_types.h | 26 +++++++++++++++++++++++ 3 files changed, 75 insertions(+) diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 950e99617dcc..150aa680b018 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -464,6 +464,12 @@ IOCTL(SNDRV_TIMER_IOCTL_PVERSION, IOC_R, MK_PTR(TYPE_INT)) IOCTL(SNDRV_TIMER_IOCTL_NEXT_DEVICE, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_snd_timer_id))) + IOCTL(SNDRV_TIMER_IOCTL_GINFO, IOC_RW, + MK_PTR(MK_STRUCT(STRUCT_snd_timer_ginfo))) + IOCTL(SNDRV_TIMER_IOCTL_GPARAMS, IOC_W, + MK_PTR(MK_STRUCT(STRUCT_snd_timer_gparams))) + IOCTL(SNDRV_TIMER_IOCTL_GSTATUS, IOC_RW, + MK_PTR(MK_STRUCT(STRUCT_snd_timer_gstatus))) IOCTL(HDIO_GETGEO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_hd_geometry))) IOCTL(HDIO_GET_UNMASKINTR, IOC_R, MK_PTR(TYPE_INT)) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index eb00358b5437..c714e8b67b6e 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2437,10 +2437,53 @@ struct target_statfs64 { #define TARGET_SOUND_MIXER_WRITE_RECSRC TARGET_MIXER_WRITE(SOUND_MIXER_RECSRC) +struct target_snd_timer_id { + int dev_class; + int dev_sclass; + int card; + int device; + int subdevice; +}; + +struct target_snd_timer_ginfo { + struct target_snd_timer_id tid; + unsigned int flags; + int card; + unsigned char id[64]; + unsigned char name[80]; + abi_ulong reserved0; + abi_ulong resolution; + abi_ulong resolution_min; + abi_ulong resolution_max; + unsigned int clients; + unsigned char reserved[32]; +}; + +struct target_snd_timer_gparams { + struct target_snd_timer_id tid; + abi_ulong period_num; + abi_ulong period_den; + unsigned char reserved[32]; +}; + +struct target_snd_timer_gstatus { + struct target_snd_timer_id tid; + abi_ulong resolution; + abi_ulong resolution_num; + abi_ulong resolution_den; + unsigned char reserved[32]; +}; + /* alsa timer ioctls */ #define TARGET_SNDRV_TIMER_IOCTL_PVERSION TARGET_IOR('T', 0x00, int) #define TARGET_SNDRV_TIMER_IOCTL_NEXT_DEVICE TARGET_IOWR('T', 0x01, \ struct snd_timer_id) +#define TARGET_SNDRV_TIMER_IOCTL_GINFO TARGET_IOWR('T', 0x03, \ + struct target_snd_timer_ginfo) +#define TARGET_SNDRV_TIMER_IOCTL_GPARAMS TARGET_IOW('T', 0x04, \ + struct target_snd_timer_gparams) +#define TARGET_SNDRV_TIMER_IOCTL_GSTATUS TARGET_IOWR('T', 0x05, \ + struct target_snd_timer_gstatus) /* vfat ioctls */ #define TARGET_VFAT_IOCTL_READDIR_BOTH TARGET_IORU('r', 1) diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h index 4c3a65cfc030..adcfa2822468 100644 --- a/linux-user/syscall_types.h +++ b/linux-user/syscall_types.h @@ -90,6 +90,32 @@ STRUCT(snd_timer_id, TYPE_INT, /* device */ TYPE_INT) /* subdevice */ +STRUCT(snd_timer_ginfo, + MK_STRUCT(STRUCT_snd_timer_id), /* tid */ + TYPE_INT, /* flags */ + TYPE_INT, /* card */ + MK_ARRAY(TYPE_CHAR, 64), /* id */ + MK_ARRAY(TYPE_CHAR, 80), /* name */ + TYPE_ULONG, /* reserved0 */ + TYPE_ULONG, /* resolution */ + TYPE_ULONG, /* resolution_min */ + TYPE_ULONG, /* resolution_max */ + TYPE_INT, /* clients */ + MK_ARRAY(TYPE_CHAR, 32)) /* reserved */ + +STRUCT(snd_timer_gparams, + MK_STRUCT(STRUCT_snd_timer_id), /* tid */ + TYPE_ULONG, /* period_num */ + TYPE_ULONG, /* period_den */ + MK_ARRAY(TYPE_CHAR, 32)) /* reserved */ + +STRUCT(snd_timer_gstatus, + MK_STRUCT(STRUCT_snd_timer_id), /* tid */ + TYPE_ULONG, /* resolution */ + TYPE_ULONG, /* resolution_num */ + TYPE_ULONG, /* resolution_den */ + MK_ARRAY(TYPE_CHAR, 32)) /* reserved */ + /* loop device ioctls */ STRUCT(loop_info, TYPE_INT, /* lo_number */ From patchwork Thu Feb 20 09:20:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393651 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4C94317F0 for ; Thu, 20 Feb 2020 09:26:52 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2D69420801 for ; Thu, 20 Feb 2020 09:26:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2D69420801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38482 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i6d-0006Ja-Ca for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:26:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51909) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1e-0004JT-Tp for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1d-0008DR-Kc for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:42 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:54659) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1c-0008CW-PP for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:41 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MhToz-1jiBN53l3r-00efmD; Thu, 20 Feb 2020 10:21:05 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 11/13] linux-user: Add support for selecting alsa timer using ioctl Date: Thu, 20 Feb 2020 10:20:51 +0100 Message-Id: <20200220092053.1510215-12-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:VrObjhoNrIFwaIgz/64Qicb2frRIBmdftNNWFBXMbhJJqs6E4j+ G5IqYaOyYpFrmRaM8OlkOisCSSuIK+LSgSP4WhKXCq6GnsFfvsHK1TzqfllKe44BePP8Fo8 MdXt0ydQRKEkwdVeL/WZI2csBtrPQ05iCgiNjbxZTSaGUrZ5En9d/BrGTHvEm046hgtT9qK 792teOxHskLFwRrMdGw6A== X-UI-Out-Filterresults: notjunk:1;V03:K0:4SJrr0qnfYE=:uxYkYYVdOsEFrRcrBxBRHU zHyy0W2HtzSrROR3JOX86HhAxZKaCVdMdQtTxJtPu9Q0w9xVBuY1+atv5ew1EkIiC/V7whD4y 0kG3iMvyHMNsYKiG5UnHRegY+2AR8IdtxZaKxprZKXqKwwXm3LUBtOK22VBkYAzm1ZYdLX0WU TQVMhYn9O1QWPoCNJQw1UellmJqUmMfNEfSo0J4V89rTRpn5IdR8ylVEBW1WmKfZWL+gR1++D 0vxvv0sF8Zo0GsXqAFP89WjJKKjtjQR9A67IFhOCMuffm+cll2CKEZOwr6xIzD/KZW3Y34lkR Qu2gaYEjpf8tzvrL3Y/IC86Rui/CEObRp/d9ADwJmq64WK//+b84MuWxgQV3553I9PDb5vzlK xMMTj+A4uow1dwl4AwotFJ8c3+HBIv1CiAPeuKKwwdGT4irmk2Vb9mqSIKhL05n+/2sH4JeiS pwS5MPAjp+4b/MSjs4MVb85IixGC24Se6wW5WkZFklXiZ45jqpV9s/9fe9lMZUijLAjrkzL2M qLcwTq1lLihFPLabU6OHkw8l+djK8hKT7kkmz5iBVtcOO4JWtYG25vvXFd6TGSO/Rv0q2Qy5T x+qfxQSvnWIjrKqBEY7n1cDsh1FKF7u0hEjCmx+rWkVejooWWWzVehCv7vafUGgVA5oTQkozP uvcKhSGnNnVNiQbvUGk+sDFje/aZXbqlGrGWnd62Nzo6n12M0v30uI23CM6HGOPbhDhJDTCzF ccqnwuBtQlaJTl1gIa6j4387Ap/AAs+C1+DWEX30V2NHhnwA1y5RY9cu6a2WOq7TDR/PbX7oy Ja5nvS9sXTFcJgASei7Dz7BCJQpLexKCKcEsXlxWWzwmMUlT0ie19OuJUMwQN9gvzMLOmZS X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.13 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier , Filip Bozuta , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Filip Bozuta This patch implements functionality of following ioctl: SNDRV_TIMER_IOCTL_SELECT - Selecting timer Selects the timer which id is specified. The timer id is specified in the following strcuture: struct snd_timer_select { struct snd_timer_id id; /* timer ID */ unsigned char reserved[32]; /* reserved */ }; A pointer to this structure should be passed as the third ioctl's argument. Before calling the ioctl, the field "tid" should be initialized with the id information for the timer which is to be selected. If there is no timer device with the specified id, the error ENODEV ("No such device") is returned. Implementation notes: Ioctl implemented in this patch has a pointer to a 'struct snd_timer_select' as its third argument. That is the reason why a corresponding definition was added in 'linux-user/syscall_types.h'. The rest of the implementation was straightforward. Reviewed-by: Laurent Vivier Signed-off-by: Filip Bozuta Message-Id: <1579117007-7565-11-git-send-email-Filip.Bozuta@rt-rk.com> Signed-off-by: Laurent Vivier --- linux-user/ioctls.h | 2 ++ linux-user/syscall_defs.h | 7 +++++++ linux-user/syscall_types.h | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 150aa680b018..8313af3672c6 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -470,6 +470,8 @@ MK_PTR(MK_STRUCT(STRUCT_snd_timer_gparams))) IOCTL(SNDRV_TIMER_IOCTL_GSTATUS, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_snd_timer_gstatus))) + IOCTL(SNDRV_TIMER_IOCTL_SELECT, IOC_W, + MK_PTR(MK_STRUCT(STRUCT_snd_timer_select))) IOCTL(HDIO_GETGEO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_hd_geometry))) IOCTL(HDIO_GET_UNMASKINTR, IOC_R, MK_PTR(TYPE_INT)) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index c714e8b67b6e..cac9228a37d0 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2474,6 +2474,11 @@ struct target_snd_timer_gstatus { unsigned char reserved[32]; }; +struct target_snd_timer_select { + struct target_snd_timer_id id; + unsigned char reserved[32]; +}; + /* alsa timer ioctls */ #define TARGET_SNDRV_TIMER_IOCTL_PVERSION TARGET_IOR('T', 0x00, int) #define TARGET_SNDRV_TIMER_IOCTL_NEXT_DEVICE TARGET_IOWR('T', 0x01, \ @@ -2484,6 +2489,8 @@ struct target_snd_timer_gstatus { struct target_snd_timer_gparams) #define TARGET_SNDRV_TIMER_IOCTL_GSTATUS TARGET_IOWR('T', 0x05, \ struct target_snd_timer_gstatus) +#define TARGET_SNDRV_TIMER_IOCTL_SELECT TARGET_IOW('T', 0x10, \ + struct target_snd_timer_select) /* vfat ioctls */ #define TARGET_VFAT_IOCTL_READDIR_BOTH TARGET_IORU('r', 1) diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h index adcfa2822468..81bc71938241 100644 --- a/linux-user/syscall_types.h +++ b/linux-user/syscall_types.h @@ -116,6 +116,10 @@ STRUCT(snd_timer_gstatus, TYPE_ULONG, /* resolution_den */ MK_ARRAY(TYPE_CHAR, 32)) /* reserved */ +STRUCT(snd_timer_select, + MK_STRUCT(STRUCT_snd_timer_id), /* id */ + MK_ARRAY(TYPE_CHAR, 32)) /* reserved */ + /* loop device ioctls */ STRUCT(loop_info, TYPE_INT, /* lo_number */ From patchwork Thu Feb 20 09:20:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393645 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E40FA17F0 for ; Thu, 20 Feb 2020 09:24:09 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C539520801 for ; Thu, 20 Feb 2020 09:24:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C539520801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38426 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i41-0000WJ-0y for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:24:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51875) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1c-0004H3-RQ for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1b-0008CK-Al for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:40 -0500 Received: from mout.kundenserver.de ([217.72.192.73]:38279) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1b-0008Bk-0r for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:39 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M9WBG-1j81PJ2DOW-005cH8; Thu, 20 Feb 2020 10:21:05 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 12/13] linux-user: Add support for getting/setting selected alsa timer parameters using ioctls Date: Thu, 20 Feb 2020 10:20:52 +0100 Message-Id: <20200220092053.1510215-13-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:YC7Edye/1tSifxL9BebyDM5r4Z+nReCzXjFzOuWf1X4JVxXv/Ni JvEc7FwZidhGlM0tb/25QTl9ZczfZNkXAfVyOw7IZCdzzxyv1W0wl2WCePTCYr6OWtGxJLj McEeSG744FvGdqPYCRG10qzaFLQt8bJju5WmHhYksMTs3MT0UccnLYEtRIdYbY6xh3mtcTn D9xvlfKpKPGDv4JfwMzrA== X-UI-Out-Filterresults: notjunk:1;V03:K0:r/nfo+gjX2o=:Np9yU4Upovr5odYO5fXnKt JJJ5XTMNIJHq1AUFeX+0J90iUpXC/4z93k++u0M/ocqysQJYOmrgefpHaueqMMZepXwcJmKRI DpXqvgKWfpKXU3m0Oc4HH/9/N/E2ZcwY2kC1kAcLC7PE9rGAk+vLK9TonXF/cZf69xrCzUHfo 6jdrOv80SNac++fiqXXDly+cT+RHWDtuilRWqgdYwwx+pzlcCzHcFDBIBbcK94Mx2WxGPlDMs mf5L9GX47mMiVwMOtafveDKxlYBmgw5hcl3IyXWxYlaMrcVwjIiqvtESMzgGuw04UDagFzDGO yUVtfbc+gTeCmhusfo590YBAsBsGA6BTcB373H57Nm1qXz1lt0i3uY5kXroiUpe55FsOEBcBG yqG2bdbROiGVtmFUzMF3tjTmGJuXSIE5O5+9RWrPjcLg6qNukMtDS41QNI/c6iqBGnWCPPNaf 92EMkSZqTwyGOs0I68KESaG5R5lu+Ie1Y33B3IHBMl6K+pKizv332Ocna20VRvALR/uXENxhs BdTiyBDWRmBwSZKm1oaLRavmuhBrt2gJvWiantdR+Eh4Fay410b75GscmMi5jGPcFhGpfUqrx 50zhphjkeOg66YJVcprkIFNVqvJnT0uhLcsPyUNeh/1kdY/UjQCGuNtEpmYi9dI9etT8gruFR xs0P+L3GqZiDghFUbx2/b5DNp8VldLQXnslItz6UqNkF7XuRIQ8nYozc1aF1z5V1ijZAUYoRP lYqyfogk2Km4EZmyDK5s7fIGqH0UCmW+Jo35pvqYa+mXqJL0W4UoeE3UO5A6t9xfiLsGy1Eyu GZyQpuQdPmlIUfGrLiaR3mmZqk3mYTgySjlZPJVCSsL934L9GsCarX5H/PBmcVM5FKJnG0O X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.73 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier , Filip Bozuta , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Filip Bozuta This patch implements functionalities of following ioctls: SNDRV_TIMER_IOCTL_INFO - Getting information about selected timer Read information about the selected timer. The information is returned in the following structure: struct snd_timer_info { unsigned int flags; /* timer flags - SNDRV_TIMER_FLG_* */ int card; /* card number */ unsigned char id[64]; /* timer identificator */ unsigned char name[80]; /* timer name */ unsigned long reserved0; /* reserved for future use */ unsigned long resolution; /* average period resolution in ns */ unsigned char reserved[64]; /* reserved for future use */ }; A pointer to this structure should be passed as the third ioctl's argument. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT" should be called first to select the timer which information is to be obtained. If no timer is selected, the error EBADFD ("File descriptor in bad shape") is returned. SNDRV_TIMER_IOCTL_PARAMS - Setting parameters for selected timer Sets parameters for the selected timer. The paramaters are set in the following structure: struct snd_timer_params { unsigned int flags; /* flags - SNDRV_TIMER_PSFLG_* */ unsigned int ticks; /* requested resolution in ticks */ unsigned int queue_size; /* total size of queue (32-1024) */ unsigned int reserved0; /* reserved, was: failure locations */ unsigned int filter; /* event filter */ unsigned char reserved[60]; /* reserved */ }; A pointer to this structure should be passed as the third ioctl's argument. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT" should be called first to select the timer which parameters are to be set. If no timer is selected, the error EBADFD ("File descriptor in bad shape") is returned. SNDRV_TIMER_IOCTL_STATUS - Getting status of selected timer Read status of the selected timer. The status of the timer is returned in the following structure: struct snd_timer_status { struct timespec tstamp; /* Timestamp - last update */ unsigned int resolution; /* current period resolution in ns */ unsigned int lost; /* counter of master tick lost */ unsigned int overrun; /* count of read queue overruns */ unsigned int queue; /* used queue size */ unsigned char reserved[64]; /* reserved */ }; A pointer to this structure should be passed as the third ioctl's argument. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT" should be called first to select the timer which status is to be obtained. If no timer is selected, the error EBADFD ("File descriptor in bad shape") is returned. Implementation notes: All ioctls in this patch have pointer to some kind of a structure as their third argument. That is the reason why corresponding definitions were added in 'linux-user/syscall_types.h'. Structure 'snd_timer_status' has field of type 'struct timespec' which is why a corresponding definition of that structure was also added in 'linux-user/syscall_types.h'. All of these strucutures have some fields that are of type 'unsigned long'. That is the reason why separate target structures were defined in 'linux-user/syscall_defs.h'. Structure 'struct timespec' already had a separate target definition so that definition was used to define a target structure for 'snd_timer_status'. The rest of the implementation was straightforward. Reviewed-by: Laurent Vivier Signed-off-by: Filip Bozuta Message-Id: <1579117007-7565-12-git-send-email-Filip.Bozuta@rt-rk.com> Signed-off-by: Laurent Vivier --- linux-user/ioctls.h | 5 +++++ linux-user/syscall_defs.h | 25 +++++++++++++++++++++++++ linux-user/syscall_types.h | 29 +++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 8313af3672c6..de6948796367 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -472,6 +472,11 @@ MK_PTR(MK_STRUCT(STRUCT_snd_timer_gstatus))) IOCTL(SNDRV_TIMER_IOCTL_SELECT, IOC_W, MK_PTR(MK_STRUCT(STRUCT_snd_timer_select))) + IOCTL(SNDRV_TIMER_IOCTL_INFO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_snd_timer_info))) + IOCTL(SNDRV_TIMER_IOCTL_PARAMS, IOC_W, + MK_PTR(MK_STRUCT(STRUCT_snd_timer_params))) + IOCTL(SNDRV_TIMER_IOCTL_STATUS, IOC_R, + MK_PTR(MK_STRUCT(STRUCT_snd_timer_status))) IOCTL(HDIO_GETGEO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_hd_geometry))) IOCTL(HDIO_GET_UNMASKINTR, IOC_R, MK_PTR(TYPE_INT)) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index cac9228a37d0..cf34129fc3ac 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2479,6 +2479,25 @@ struct target_snd_timer_select { unsigned char reserved[32]; }; +struct target_snd_timer_info { + unsigned int flags; + int card; + unsigned char id[64]; + unsigned char name[80]; + abi_ulong reserved0; + abi_ulong resolution; + unsigned char reserved[64]; +}; + +struct target_snd_timer_status { + struct target_timespec tstamp; + unsigned int resolution; + unsigned int lost; + unsigned int overrun; + unsigned int queue; + unsigned char reserved[64]; +}; + /* alsa timer ioctls */ #define TARGET_SNDRV_TIMER_IOCTL_PVERSION TARGET_IOR('T', 0x00, int) #define TARGET_SNDRV_TIMER_IOCTL_NEXT_DEVICE TARGET_IOWR('T', 0x01, \ @@ -2491,6 +2510,12 @@ struct target_snd_timer_select { struct target_snd_timer_gstatus) #define TARGET_SNDRV_TIMER_IOCTL_SELECT TARGET_IOW('T', 0x10, \ struct target_snd_timer_select) +#define TARGET_SNDRV_TIMER_IOCTL_INFO TARGET_IOR('T', 0x11, \ + struct target_snd_timer_info) +#define TARGET_SNDRV_TIMER_IOCTL_PARAMS TARGET_IOW('T', 0x12, \ + struct snd_timer_params) +#define TARGET_SNDRV_TIMER_IOCTL_STATUS TARGET_IOR('T', 0x14, \ + struct target_snd_timer_status) /* vfat ioctls */ #define TARGET_VFAT_IOCTL_READDIR_BOTH TARGET_IORU('r', 1) diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h index 81bc71938241..4e12c1661ea6 100644 --- a/linux-user/syscall_types.h +++ b/linux-user/syscall_types.h @@ -120,6 +120,35 @@ STRUCT(snd_timer_select, MK_STRUCT(STRUCT_snd_timer_id), /* id */ MK_ARRAY(TYPE_CHAR, 32)) /* reserved */ +STRUCT(snd_timer_info, + TYPE_INT, /* flags */ + TYPE_INT, /* card */ + MK_ARRAY(TYPE_CHAR, 64), /* id */ + MK_ARRAY(TYPE_CHAR, 80), /* name */ + TYPE_ULONG, /* reserved0 */ + TYPE_ULONG, /* resolution */ + MK_ARRAY(TYPE_CHAR, 64)) /* reserved */ + +STRUCT(snd_timer_params, + TYPE_INT, /* flags */ + TYPE_INT, /* ticks */ + TYPE_INT, /* queue_size */ + TYPE_INT, /* reserved0 */ + TYPE_INT, /* filter */ + MK_ARRAY(TYPE_CHAR, 60)) /* reserved */ + +STRUCT(timespec, + TYPE_LONG, /* tv_sec */ + TYPE_LONG) /* tv_nsec */ + +STRUCT(snd_timer_status, + MK_STRUCT(STRUCT_timespec), /* tstamp */ + TYPE_INT, /* resolution */ + TYPE_INT, /* lost */ + TYPE_INT, /* overrun */ + TYPE_INT, /* queue */ + MK_ARRAY(TYPE_CHAR, 64)) /* reserved */ + /* loop device ioctls */ STRUCT(loop_info, TYPE_INT, /* lo_number */ From patchwork Thu Feb 20 09:20:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 11393655 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 10066109A for ; Thu, 20 Feb 2020 09:28:16 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E500D20801 for ; Thu, 20 Feb 2020 09:28:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E500D20801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:38504 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i7z-0000DD-4t for patchwork-qemu-devel@patchwork.kernel.org; Thu, 20 Feb 2020 04:28:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51935) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4i1g-0004M3-Fb for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4i1f-0008EN-7z for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:44 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:41847) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j4i1e-0008DV-Ob for qemu-devel@nongnu.org; Thu, 20 Feb 2020 04:21:43 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MEVqu-1jFCQ40vDm-00G1LU; Thu, 20 Feb 2020 10:21:06 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 13/13] linux-user: Add support for selected alsa timer instructions using ioctls Date: Thu, 20 Feb 2020 10:20:53 +0100 Message-Id: <20200220092053.1510215-14-laurent@vivier.eu> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220092053.1510215-1-laurent@vivier.eu> References: <20200220092053.1510215-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:JvK0QtNJZ9KpkuooMB2cdSBLneSIiuwLh8Ash4Di14Y9wtSAnry G0Feg9JcNA3ojyXn6GoQ2q1Nt4mGNLt9Xbq/ru3Z3kB0arlQGHsbaaKkZsRiRlaTWoXqH4w eaghHI6fuXWW4TM8nPz+23igwPmVHUFDhSWL5EU2GgTZeq+QGyXgGFLKcf5TG//bPsX2QQ6 TzVpF1Hlp4z6jaLM6X2Ig== X-UI-Out-Filterresults: notjunk:1;V03:K0:QJWI2yYaMxM=:jxDy3dfsAHLnQa+BgKSvHp VI4CmMNnQTnsiUxqB+mkILEOyWYQ9Nws9B9MF8Ii33gGDn5Pqn4ql43oMDYCnrc+10YIjrJ3p Toc6zTRj/jn9yDSnRvrlX0VhSBF/e6An1WjHkNt2vVez7QhQW1UX7q8OKx7qDbFTX/sY9uOGN SCmq1HREolbkCRoOwW15CmZqk07airUZEzn7NIpkPeGxCV/ZDmLWjrgKGSsIL9Xo7ixfMwNN/ BhJ8m8dljFclKUX6CRZVHVjCPaoIhhJxoChIGmJ8+gqCIeejlqBLSdeVdC9F1m8FXs2mmQWW1 4ahj8oe2elaA5wfpYwiI/mS7uBrg7R33tLef6vsBj4imnc7CNvjMDdURXRzGrvIiInlPqywVO RWTWicSDBMTrb9JJ95kdNqUYGmMjKteHloR7j2x7hiP1rStAg0uIHYygflNStnAdcjTfc7+17 uJzAdy7fiINIh1tlaaJjTAbzltj+LmPYkKh382gkhepQlTlOtpyZsakxiv2tU6WJWY7q2gZ9A kOak51uvPO7YcjiAR6TMNaMd1wR0RwuRzzyTVK03DnQ1wJgfiDuhwyenNgBL1xJXo4f4Clpxi Bb3opcIfecPvxPFEYBtaUnRnKl+lDsWwD3vfoPLw5A1XfbrY/3PVnkzth00PhViWeBTUITp6+ 6GgEnLX/Vfq6px6sue46x0RKB3DAuOXaw5bC+5wk9ccrLbnFEiH6HpmKFuxWexfnmsZvbiUDl UQ3znYNGicIKp1W+YW/F5O4PyaU4+nc9rAsD2JaIiSgoAWeSwA7bavhmfVU1IFSc9dgV64Ku1 S9lPOwAEC1dxoQ5xLyrauYMX0AxwvMlTKYY2nmE1KPergi6rve9rg2GxYawa8VqZTtMTyXq X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.13 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , Laurent Vivier , Filip Bozuta , Aleksandar Markovic , Aleksandar Rikalo , Aurelien Jarno Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: Filip Bozuta This patch implements functionalities of following ioctls: SNDRV_TIMER_IOCTL_START - Start selected alsa timer Starts the timer device that is selected. The third ioctl's argument is ignored. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT" should be called first to select the timer that is to be started. If no timer is selected, the error EBADFD ("File descriptor in bad shape") is returned. SNDRV_TIMER_IOCTL_STOP - Stop selected alsa timer Stops the timer device that is selected. The third ioctl's argument is ignored. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT" should be called first to select the timer that is to be stopped. If no timer is selected, the error EBADFD ("File descriptor in bad shape") is returned. SNDRV_TIMER_IOCTL_CONTINUE - Continue selected alsa timer Continues the timer device that is selected. The third ioctl's argument is ignored. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT" should be called first to select the timer that is to be continued. If no timer is selected, the error EBADFD ("File descriptor in bad shape") is returned. SNDRV_TIMER_IOCTL_PAUSE - Pause selected alsa timer Pauses the timer device that is selected. The third ioctl's argument is ignored. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT" should be called first to select the timer that is to be paused. If no timer is selected, the error EBADFD ("File descriptor in bad shape") is returned. Implementation notes: Since all of the implemented ioctls have NULL as their third argument, their implementation was straightforward. Reviewed-by: Laurent Vivier Signed-off-by: Filip Bozuta Message-Id: <1579117007-7565-13-git-send-email-Filip.Bozuta@rt-rk.com> Signed-off-by: Laurent Vivier --- linux-user/ioctls.h | 4 ++++ linux-user/syscall_defs.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index de6948796367..0defa1d8c18d 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -477,6 +477,10 @@ MK_PTR(MK_STRUCT(STRUCT_snd_timer_params))) IOCTL(SNDRV_TIMER_IOCTL_STATUS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_snd_timer_status))) + IOCTL(SNDRV_TIMER_IOCTL_START, 0, TYPE_NULL) + IOCTL(SNDRV_TIMER_IOCTL_STOP, 0, TYPE_NULL) + IOCTL(SNDRV_TIMER_IOCTL_CONTINUE, 0, TYPE_NULL) + IOCTL(SNDRV_TIMER_IOCTL_PAUSE, 0, TYPE_NULL) IOCTL(HDIO_GETGEO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_hd_geometry))) IOCTL(HDIO_GET_UNMASKINTR, IOC_R, MK_PTR(TYPE_INT)) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index cf34129fc3ac..152ec637cba6 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2516,6 +2516,10 @@ struct target_snd_timer_status { struct snd_timer_params) #define TARGET_SNDRV_TIMER_IOCTL_STATUS TARGET_IOR('T', 0x14, \ struct target_snd_timer_status) +#define TARGET_SNDRV_TIMER_IOCTL_START TARGET_IO('T', 0xa0) +#define TARGET_SNDRV_TIMER_IOCTL_STOP TARGET_IO('T', 0xa1) +#define TARGET_SNDRV_TIMER_IOCTL_CONTINUE TARGET_IO('T', 0xa2) +#define TARGET_SNDRV_TIMER_IOCTL_PAUSE TARGET_IO('T', 0xa3) /* vfat ioctls */ #define TARGET_VFAT_IOCTL_READDIR_BOTH TARGET_IORU('r', 1)