From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499263758061882.4517683695688; Wed, 5 Jul 2017 07:09:18 -0700 (PDT) Received: from localhost ([::1]:46411 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkzR-00025w-CY for importer@patchew.org; Wed, 05 Jul 2017 10:09:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44681) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSksu-0004ht-7P for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSksq-0007j8-Uk for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:28 -0400 Received: from mail-eopbgr40113.outbound.protection.outlook.com ([40.107.4.113]:64062 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSksq-0007gG-L0 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:24 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=h5ZETzwQCTZxfCiVkYTLSPXAuOsNqkIFE1aUwpXJrJ4=; b=OJ1Iyzh+xB33TJThO3LFWYaMi7qIGpb6Fi3uzTn9OdPqvIHwWz/r8aIo0R65WvAZLUfT9qu6kygihwZYrIsHMirnTENRHsE24E4GKYOEhrP1sxI4fGijXsVmhTnrT6V7rkX+t/inSwdoWJO9uB06OUgyJJkMId/N6vFAarGLMg0= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:01:52 +0300 Message-Id: <1499263324-15184-2-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 02c62d74-ac50-4a90-2635-08d4c3ae736c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:kgkMbzV1U+o0h0S0ThJcpb72o+zBhwDmbln/qKHalcQlW3tiQNcE8LUpCDR8AHubUBtNzvru8mQnzDMYs0zG6AbTBg3kl6nRIwtVyPbxPvcEYiFSZnhXNkmRbduclVUCtxJH4rlAbQspdAR8gjgxWVlk+P06nQfgN001/xT07mgMguT3Cfz/3xhxKXpnZOKNuj0Yoqb5ShQOLKM4Tc6/xrLhk3La1hjO/lIbZd6pvrWsWSPOsqsqhYEM2KhhaQ2/bb8pGb9tQ+w3yvd8WuLBJ1PRDImXBGo9CYiBPoRI2rC+LtNMxT9U7nFQE0uom6t8gKvhYnCZPFEfBVLV0qAOihaS5eetbbYcBjSFR4+Imo2xX89H+iQgo19q7U3fEVOYkcGvKXxghDk7zxluxYNVxdHMx7/x+v/NbkmFGBjXHL+9pxV9r7kWgsZdVbLjP4N49SZh1yFlybfVofSf3Zx92iHVs9/gAGG+xhHGsva72SZeDCp1BKegemP34uFOZr7fWKK6Uymf1RGuNja7JYUS3I1L4GkfaSJ5BS+Skl/SOoc9lxTVTtbHGmsoqi0U5FTl4owNb4mvdYbXvRMWm00LASBspUKthTnSsoiUW3LqzaI8YSHV+5q/mWpg8RS+mekYEJFT4ON6hsDypnzyUCXTNvqlGqR696BxwJKptmeXUy9IuEg44+PFmpOXFEDCeevhf217maaMB2j5Hu79+AFCv3kkx0ju72addep7TuvUABsPjOY+a4V6b2MqEdvhv+KA X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:nXdI9UkXvbZYUER3WggfSF8P8xAWHm8B/DUsSKXdb/+VGdQ8GThyP2JrLMmwcRdzLYPd1x2klXQblxCfd//e5v/q2m9ziSIJzWZYeRHg/JfhcS1cvKeo8WTuvVOhLFMANCY0T8/yYpASLlZO/FtV3UB9OojoaJQteUu5oa5RXgL+GDrDV4vgBgq7gLq5IvCZJ6d8RKuNp9fS9rDuaGFNacFW50hRHBNvIrPEYu1xOs4QVzi3tH9sby97YpmhmFx5mVZsMp5tp1h0/ZcNARxcCJrbduQdPKXNyVLeNcLhT1aw2EXy/mrtiTl3DzXMXm4hPB2UgtubRZ2o8YVYzTdscE5aUDJGTw3aRuzvrdzJab+SYHfW2WJY5sCDDgEeV6JhxeHILIKjE+umqyZVoqy8gN8DAbD9tuoa1VunMlGouBuhWz0c6026bza2TquotcoDqwOicnesxS2RZVE9LF5errAe12/GG/kdPW1h1PBWt/3ijVSTbeHEKh+JouoCAlPo1q2iO57V41FIY3QYPo1mz4C/NL7g3kWwXxFxfqsPVs7/n5NIxmFz6VWtdbwfAV0ZtOXJpfQvOIBt3kX3P9uE86U0TylZy64lMl7PuiPR/XnF4kcjcOcvis1vGXMIh2ob/cbnYsZpkQd5WTO6UNCGzoh82N+I+3HSDrsido8vdW1vStKWneZOEMHFTBHYGViR6FIc1ipewH+Sa9hTXDxG+BhpQBucw3A7akA0wVdM/jHthPU9f8ofiOcrlqtFydKMEEL3KcOVOHKDV8oSM9IOpIL2FEcK8DLDLbqsyp11I5j37joIOFvsUPpoUNCeFMYXpCNyMXjwXYm6dkDrWEO7q47GcG+Trm5Pa8aSn2Z00k5Un+cExBK++amBGT9H0ryThZm0GcXIKfhuK5e5GSW7sxDiPMM0NLuBhQ32k48CFTQ= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:2J05I/w2mscjxlTo0uW/ARD7YnTMt091gpkw2MIyHVaR6fKgfJLci685ANN7fRPS8B6pe/0ItgjIExpOMwViW5HqG6ARrZtAF9nvVmESPUSUN3qLvFpq+niR/GVOKtD7iHBtgeVHWUx60jPj+2pQcV/XpGGl/i3dbmnvczhmGdBWeRvzRnQcSIY/THJ2dYGOfTeD0Dw3zKCKl0qBpy6z/Rmfj3RJbx4hniCfPa8KdeqJim4l4mM+J7VYrHTn3B5lpXpTLC9qjb6G4i0Igs1ZLDfHSwYjjmdcY6Rv4LoGsKOovE2gWQhlmV1Ij5oMjOw/O2x/4PUTAgWSIqxggDqbXVy9u+n73aaEXYMi0r0mxC92S1LfVVrrvgR6zVuZmbvBMDA4joYQffHz6ZQfGuUdXNeZ/ZxtJ7fFhNqNKyVuIqzamt/MQSEq/mbRlc2dm0VZDQZAsf0bdxqqDg7Vm/LJxQK9EEvWq4sjBwcDhR+TgkMMFN2Fs8+bP3NRBS8kWScB2H+R0nQQYMCjPv7mVaIL53dqNNCRun6/KelzPSQI3h+d2xZ8numPWijp9foFFgwKqjNUatOod8IYhnPmsX5DxVbUzkbTdu9qEYhfd6P2dcKVG7b2v8VkKN11rGLGuhFe7f80CTBVFN/Cmyn1RROrzyLXBHWXx+EDzE/qGhuPiH8= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:EawPK/0dTV7YwCu3zoZfsnwt0KKRBcg2OF+KSz5gg/rRfeTLHicvtvDKgW7o86ZLUq8yaj0QjzHV0dPhY3XEnF3Fat2LDprsjjc6hKQpZ/WIplp0yIsNf9hJ0t8gCychUeWpj7ctfK35shK2ZWNhAob7ZvCFIr3mRoLYrvznBmivL8i91i5k8RBHlZjI2PG9BWbs+zHYpDTPVX5Wtbihc76WHsCWY6UX668iBtoDVCsJPbvVFbhKkjGBXZGpEYURkUAVwRFVmVAxy2qrSqmDU0MS1NJNepxKgMa4H0XLlWjlQ57mjIXVHbpNoy7MZZOwbPIQ8z72ke6aEWKQEpG7PRQX/l8INUx4ND1uOhgbjgVyDhQP+7ddRcLewz8DGWlF5ZnylSGr6y9GtRDYrtloB9vVgnynSxZ4JgsGRU2pvK0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:TBxMbJW8LjG6Vo3liIrdFfUhtrPRFgPJ1zY/YEFb?= =?us-ascii?Q?VjYXZn/ELzlv5QQ73aR4bgKG3U0MaWtNMgoABy42ysdFjkXHZF8h3Zi2GZ8y?= =?us-ascii?Q?uO2eIOSfVFt+3VCkide/vnGWaRUI3ubXEuebc7CtIlQhfhyApLU9BQ0bDPd5?= =?us-ascii?Q?3NWToEx26tLL4S9pF43VRruSO8Y3iHxS8kkzbLffkRdF4wQ1c7pK2perGR1H?= =?us-ascii?Q?6NL+a3kMoGR1cDP1Lo6wKhWd+dyIopB7loMeZM4JspO3TQ8JW9LUTfRSG7Sf?= =?us-ascii?Q?YO/XX5JIn3m9tnf/P1rp72zRSdwLmIV+cirBoxJle/rmn9zi2kF5pp/zr3lO?= =?us-ascii?Q?PeSbd7/MWu0DO347gKlyWxupQ0m91sZF4/PTljw9Jkpa5PyxsQMe/x4yvlkV?= =?us-ascii?Q?Y0evMPr8Fkp9MQGGAy6+IjS1gaolYgz1Mvs5X+QY8pMduWGNIO/SRM+q1qfi?= =?us-ascii?Q?tjBbBf4G5fKx7CDi1w8W8j8VmJDHC4ucmD7+WSm+iSd4g7ARnJ/Mo6HDWa9J?= =?us-ascii?Q?xTaOWEJ4lIbxUI+PlpKeAya8I9QoOTk7JJ5/UK0p/ischwcpomLs7kWlQkbf?= =?us-ascii?Q?pPzY92Ym4E7VUQSn8taYLEcLcSaPzbNbmuW0w9H0I+rfPuZglPh7vpRgKNwK?= =?us-ascii?Q?Wkz2b/NRFyeO39UDtZk6DkXNWgPwoA5GJ2qdm7kWIbSxYV4g2u6qVfjf32cm?= =?us-ascii?Q?wcs4RGd1o2ECTeDGnZ37RLnSyUBWRs5JbgmprV/KQRnSLEWayVeiJm7VbGzw?= =?us-ascii?Q?4GxvASLXdnK/AEQUARgPZ5ZNJRj6EzbPVWjgR+odESfYAlVc+UvAyMASP+Ir?= =?us-ascii?Q?0oZAThu/QAJOGzBWzeLD82kOh9o6FUZB7Vc7cGPx4+tpypuiG11QFlPCoOUC?= =?us-ascii?Q?JuueiocTR/7lhztemZWzghYIpGPHS8+INYzEeXFM8h8G1iIimgIep8TpTlmg?= =?us-ascii?Q?6lNTSdx02p1t28gt2ajFhx453ie0K+b0kCXo3F2jxQNZKKG3FXfE69Of8E4O?= =?us-ascii?Q?LHMUw1cZAtE2KJCIzYMR0Zd1D6WpCoCsxbyhuuopgDRsFgVdR0bmzOfzqJVg?= =?us-ascii?Q?dwMcZVVKTEOgYIegxGGfqEcE3IuaFXAVZZX4WRXUD3LFL4xNAUr4TGt5IO4T?= =?us-ascii?Q?9Glsv2zyxMf/Z7YkmWyCnj50BhzWltEFnzb08/Rks33bQjf5rK5LNUZB0ta1?= =?us-ascii?Q?qkeKg1Nj9rL60BI=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(5003940100001)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(7736002)(6916009)(48376002)(47776003)(305945005)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:LziwCOfOmyHL3XNrocioX7NkajusCJqhqZfma+/?= =?us-ascii?Q?huGEj+cudqpQY+onGh2TSA8PGyU5PothA7hZWw7V8rMr63+HicOw8R3Ol7XV?= =?us-ascii?Q?yIRdOaVbZRiapBpED9Ti0mTc0x93qU45GVbGCwhh1P7DZ7glURtOZd3wyr6Z?= =?us-ascii?Q?9E1w1OvL2Jq9LTk/LeFl+u2JxVmCMSWpmvl3aH0IlnDe0qnQEXux0s77tbRa?= =?us-ascii?Q?raeOFpOsz3r6My+zu6jGdXeh+m1Bobrod6sTzaP70WabgLbDHwK7MKHf/ITT?= =?us-ascii?Q?W4UpQr/q8vGCAIofOBk3IgpXzE4+JJPXkc1z9wWraOSJpJ4ejV16PTXFh0zX?= =?us-ascii?Q?3ooUdcOf0lYFNAMKhh5T7osHkTn55c0CjA5LN04iJrn10mRzRokeNw8ZR6yd?= =?us-ascii?Q?CMzcZXpDJiAvhECDC6grAhVlIXi6T3pKsn1yQYpc0bJqXlIuVg9T0p6lPWKr?= =?us-ascii?Q?VfGjxApcgwDQZ0aDfTg2UUIv8FYNzVYp6Q/0DnaYNxrJAuHAbw36FYeHn9PU?= =?us-ascii?Q?y56fyMpsZpj9tcSyNHCH4rY32L234qZITIQBu7C8zBjp3DLJ7hv155OeT6wz?= =?us-ascii?Q?50HRjPUfUI8Vi3V5u1vRd7gLq9qdvccXsbxvR21eIueWF+KiMXCPEbo/2TLK?= =?us-ascii?Q?R3OjbyVu0MNoyvnRqbamczfG6WgT7j+R6B4dE8H+xucSqNAbR8ytL3HQ/CqX?= =?us-ascii?Q?nKfQoPfMPq2tCKbHmHrfZKFxJT8wnY3GbEPR0uNdC9leXy0vtFrcFfF9paKY?= =?us-ascii?Q?m0oZMb7mXANg6ASueeOc/4UmAhmvPkdS5AOhHHbkOabd3IVl/pBm1XCP6JwZ?= =?us-ascii?Q?BMMt9BZRRowefNjBeDSrQuKb1k8HxhvCfFsV0OjxyG1vNiCx1/ThkTrAyQMW?= =?us-ascii?Q?/Cp7cU6XS7EJ8ONjWumVW9PAVfsbQdCNSdhaa1IFMmXpQfiO6ggAeQlx1Vyr?= =?us-ascii?Q?AFgcgH7GM12DMIMU3sa88ddGXPAc28rmTqPnOiblZcbX/FnvBjO5ah2NwPjW?= =?us-ascii?Q?0IJDNhIPxi6att/idyUtAcUsaU3IXhwQdBkse3NEy8UH3XX2VOuPfTEJKJRk?= =?us-ascii?Q?hOQ9kY+/yrW7ggaVdo9lqR6iBsBus?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:fJ0sryalNNS6VtV0+rMNsiykCEUZTVW9AcWAyvH6?= =?us-ascii?Q?chXl1NfjfnLCZiD4zTURCAHj4kKlg0q8FPmrgqs8dMQyLT4aaAS34ffM5c2B?= =?us-ascii?Q?Tg0lgGXm6sDXOTBPWE/z75lZxaYgrelERkIhCr/nCy5GfI+lmoFR0cXIlSwD?= =?us-ascii?Q?lXKCJ+E9wd5pCHH+NBJQ2MqbP++w/9jd0bYt71S9LPlrOyGphEuWRweHK0ll?= =?us-ascii?Q?SDnpwCY6n9CwFfJU+O06fXJPKyS0XjBPFK41ee3v8F+IBvTsPvos9X0TvIEz?= =?us-ascii?Q?jbL2A5xcsroQFH7gC4ynyZ2m/SaWYE+ge+rqPen7Lbgf6Zkx3dKzl5K15Gk9?= =?us-ascii?Q?wk5mfZBP3XRzhDmMLjM/ljb4LKqrIZUF/d1Nq34gzPrG8rO2R+uE3FlgEvKD?= =?us-ascii?Q?a62gGKCS+BYF1z9HpxeBuY3K9Ip5uRBo+xkHJWh2imPkQb6emSflwNfp8EZL?= =?us-ascii?Q?2qoayMrFWpSRhC1l3q/D3tFcDPba5mjY52wxz6CH6xBh8ChM0QlCE46Yoxwg?= =?us-ascii?Q?04G6K8cq/o8SXffTRxk5/QLd++ITJ7wXgy5Fu8rZa8djNdzN87RdGSd6BTxx?= =?us-ascii?Q?9rTwPJ3IxFogcUnyJsjXy2HaFkkTycUSTTTG4PVc0SluoBomLPHVfRoaOJMH?= =?us-ascii?Q?s7hX9cqoQ4T+P6rknsR5RtqnQFeVRyue6qJNJXSoc0/sMEHktlV4rZ/vQT3w?= =?us-ascii?Q?XhmzHnf6X7bRS0QD1Ri1hlIgmuk8ULAsseQb70hXxU2tgnzS485jNFgseoR6?= =?us-ascii?Q?RhhfaEcBdh+ZPe2pz4ZMjSkI4HrMgW8CUjybzWg2YDMjX5F4x+gliMQzkpgx?= =?us-ascii?Q?3b5qpNzLpcVMdHY2oFE90YbneFWgRXLZplroALPnBWcLZmcWE6WDsyAWa9RK?= =?us-ascii?Q?z7y+hWKZY/kds1eKD8VFJxVHrkVrcSGjlz/Zr2xlwyH61yfjsbm1+6ZleSfI?= =?us-ascii?Q?GtMPvOiauTHN7uuyC16FVVZYlf3jXyiZgFI/d95kdvyWy0BhrszacpsBDgs+?= =?us-ascii?Q?W5E=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:DukwcrX+wH2mS9HuTLoONqfqzWTiaIuSdOqRAN9459mUbJ0nQF9EiYy807Mb3C/2iWm+XERv0QzH3iPce0O0F6Ay6qU0pAauLx6xUiCdLKyg5qHlVGWyWTSDsuiWxnzs9IZ6dCxw+125ZicUKT+Vxo78ddS2/Mrt3F/UiCpyk1oBkmuTHeFRuH1DnsMTIemUFK9jyWQc0x8aBM2K9Nrr8wGpKMQ33wpiPe22KtYHG5sCOu9kKualzZ43adt0t4LFkCb3mwDiuSQrSjjn2FsOerWQydft+3w+6y4yBujUBH47cZS09+Yg5hf+ZxDwucuHZ9U6Ez8D5Aw44KNakfo27kneluUpDdg3/H3nNVWD9q1MhQoLafrW2Qmmlv+IK0ZtT14Jrc5F+EgIkfMSKGWun6OhEJMvmhRJKLZlpciNGJIVnFMvgSCLDeFi4vluuasw+PqPvZSeBGfrQqQN/r+yT9UnHTdAdtjty0MaWXbaFZnDVElIWwEL5PYL19cEywnB; 24:GIm99TU6VIF44DyYkOQY+kcDU56mswclMGlqf3Wq2qsnBf9OAH88L5u9a9BiLZ15D6XrDeRhFQ85XT2G/6+XvKezytB78qBH3Pot7V3yRj8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:AThmO+wt97K7SbxpLw9aTFW6RAy9maFsdbpcezH67zJXK1IXpnKCCdc5ebbhhF3hbYK10rIO3e1iM2+W2P40V1bIzm6EL2PGdAJGHB9SDT5jZi5Y/zkdsvxaSVJchIGLNR/X4zCjNLI0G9omSfH8B4mxHNSYQHaB6/D3tLU/q+qh1N8Ngax3FqYjYMZI/a+DQhJ52ZLDnFf9jUS7nCWAdmPKFc9QOl/GEqj7JYg6MrI6Kt2G9GAwWR9Ob4Mg0voGy20UCmikrjszECcxiMHS6aaWkihG9DrlWEs9tObWQWljVGxjAv8gaMt7jW3hS7UncLQc0Yoz262P5sgQNPrIuYIQBuYIjEFWQx6sQIDAgRvmp9lruPb6cJvIlq/60uXeRTcPHRf7W+1o0MMA0ZqP46TMT9nvXJmv10DcsPNZT+1Uvs3FgROxgwiBp9XSbvEpwpCfFYo0jleokuq8AE0oNTFBLuFTWGHEVecFuqGiiSpHq9KOGzpgYKt9irwPsY/nhbQavF46sDCy2rKnn0Oir0sLc/hV8GVg/rQvOy/azwoV6yrnLmpnBLVnodhds1V15XXa/WDM0x2hSzU0+714n2YDcgAeNSvU6laRkcYa25ibrle6uCCKHgPKwc4AdOb21FzE+A8jRLnpCyCFgy8AOn/c3FldCUWg+Us/gWkJkyWgIM5PZ1nG0GAl48qpszD3D0tlUdoXrI5ZKEGyXGYn819lzSrFOuQZlmgJDT0DcJrQj0T/q6DbpOkjA/KhKnqb8pEaUHMSvO9DLZr6BgL/tpsOhSdTCStAxVcMjndAjXI= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:5C2GhQJZh0vLW/rhJgsMZzJ/5gdD2KkhqxT8THb8Fqmfe+tpZfx/YPrN2HykZSSLyEFdF0/k8J0/ekusmujl1KdAYdXoXfJi71+k8Vpo4SFGsRANxu382HkXOXAMUKgOFJL3OSoDA1cipfJd0K/ezIlzb2xp4Rrnm1jAcwCPyGg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:18.2556 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.113 Subject: [Qemu-devel] [PATCH v5 01/13] char: move QemuOpts->ChardevBackend translation to a separate func X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" parse function will be used by the following patch Signed-off-by: Anton Nefedov --- chardev/char.c | 81 ++++++++++++++++++++++++++++++++++++------------------= ---- 1 file changed, 51 insertions(+), 30 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 2b679a2..839eff6 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -556,17 +556,23 @@ help_string_append(const char *name, void *opaque) g_string_append_printf(str, "\n%s", name); } =20 -Chardev *qemu_chr_new_from_opts(QemuOpts *opts, - Error **errp) +static const char *chardev_alias_translate(const char *name) +{ + int i; + for (i =3D 0; i < (int)ARRAY_SIZE(chardev_alias_table); i++) { + if (g_strcmp0(chardev_alias_table[i].alias, name) =3D=3D 0) { + return chardev_alias_table[i].typename; + } + } + return name; +} + +static ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Error **errp) { Error *local_err =3D NULL; const ChardevClass *cc; - Chardev *chr; - int i; ChardevBackend *backend =3D NULL; - const char *name =3D qemu_opt_get(opts, "backend"); - const char *id =3D qemu_opts_id(opts); - char *bid =3D NULL; + const char *name =3D chardev_alias_translate(qemu_opt_get(opts, "backe= nd")); =20 if (name =3D=3D NULL) { error_setg(errp, "chardev: \"%s\" missing backend", @@ -574,7 +580,40 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts, return NULL; } =20 - if (is_help_option(name)) { + cc =3D char_get_class(name, errp); + if (cc =3D=3D NULL) { + return NULL; + } + + backend =3D g_new0(ChardevBackend, 1); + backend->type =3D CHARDEV_BACKEND_KIND_NULL; + + if (cc->parse) { + cc->parse(opts, backend, &local_err); + if (local_err) { + error_propagate(errp, local_err); + qapi_free_ChardevBackend(backend); + return NULL; + } + } else { + ChardevCommon *ccom =3D g_new0(ChardevCommon, 1); + qemu_chr_parse_common(opts, ccom); + backend->u.null.data =3D ccom; /* Any ChardevCommon member would w= ork */ + } + + return backend; +} + +Chardev *qemu_chr_new_from_opts(QemuOpts *opts, Error **errp) +{ + const ChardevClass *cc; + Chardev *chr =3D NULL; + ChardevBackend *backend =3D NULL; + const char *name =3D chardev_alias_translate(qemu_opt_get(opts, "backe= nd")); + const char *id =3D qemu_opts_id(opts); + char *bid =3D NULL; + + if (name && is_help_option(name)) { GString *str =3D g_string_new(""); =20 chardev_name_foreach(help_string_append, str); @@ -589,38 +628,20 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts, return NULL; } =20 - for (i =3D 0; i < (int)ARRAY_SIZE(chardev_alias_table); i++) { - if (g_strcmp0(chardev_alias_table[i].alias, name) =3D=3D 0) { - name =3D chardev_alias_table[i].typename; - break; - } + backend =3D qemu_chr_parse_opts(opts, errp); + if (backend =3D=3D NULL) { + return NULL; } =20 cc =3D char_get_class(name, errp); if (cc =3D=3D NULL) { - return NULL; + goto out; } =20 - backend =3D g_new0(ChardevBackend, 1); - backend->type =3D CHARDEV_BACKEND_KIND_NULL; - if (qemu_opt_get_bool(opts, "mux", 0)) { bid =3D g_strdup_printf("%s-base", id); } =20 - chr =3D NULL; - if (cc->parse) { - cc->parse(opts, backend, &local_err); - if (local_err) { - error_propagate(errp, local_err); - goto out; - } - } else { - ChardevCommon *ccom =3D g_new0(ChardevCommon, 1); - qemu_chr_parse_common(opts, ccom); - backend->u.null.data =3D ccom; /* Any ChardevCommon member would w= ork */ - } - chr =3D qemu_chardev_new(bid ? bid : id, object_class_get_name(OBJECT_CLASS(cc)), backend, errp); --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499264261296164.33385691235014; Wed, 5 Jul 2017 07:17:41 -0700 (PDT) Received: from localhost ([::1]:46461 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSl7W-0001IS-9r for importer@patchew.org; Wed, 05 Jul 2017 10:17:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44779) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkt0-0004l4-GE for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSksr-0007jY-Pd for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:34 -0400 Received: from mail-eopbgr40113.outbound.protection.outlook.com ([40.107.4.113]:64062 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSksr-0007gG-AQ for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:25 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=cNtUkD4rBOUOFU9lAq9mxSoqMXowHn+3dfpVPhlwx0s=; b=fPNiunF3AP7JTiJQF7fDCbaUf70Dut0OkGUdrOIEFyIjDDyNkkVEb01+DhDnk562IMW65W5QnQTxHGG1ROFuxJjmfPm0EhaUHu6BB9NEKOCVBJR964VeWgiZja1MTeTJrgF3V+6Vk/Jbu3DkbrmQ2yZZ8DXLth1tfDknjPAwc6E= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:01:53 +0300 Message-ID: <1499263324-15184-3-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fee4c2a3-adb8-4e41-f4ed-08d4c3ae745c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:lYyCJuG8q05tt6KA/n58kLDE2i6PgER8pkwQbRpAqO/ilmBTjaIA/8tbzoc/zf4BzXXCOfBWFPsP2ARUtYZHvxbvEOxvHJsSNKD6lRrX0bTqFio/hadBYbvhIrwcABh8SGb7NY+LeazejGBG/MOPWo2N/JYdf+HgvvQauetRRZYeQtWd3WK/PWSsv/InXEhlQufMS7INyXpOUBRgKt5RyCPUrxdgauLsUtuA/jaYTE0dpEjbV7+Jw7c0SBHq9TBHtQZbpGCpmGp0/3DGAtsdmDFVfanbcGD2kjD2LHuKqrlZFL3PX2eULXGRULGaIW2VuDB1MDgLY5DZlIjmc8meMGS97jDx8s7KF0eo2kf+GUYZua1tWeWBYhzVHMD0AgBo7PcHt0+/DdPNDPE7CLUAYLheyrG13brN/mu0LW9Rf7/Jag8lvc+sQvTkBOtdUIeih90AHTg1Cn2uM51LWD6nVwUcOEzOk1nH0+rN6d9J9632nsgudOfmi+SDf+vf07JEjjQwIM2Uggm0OXIshJgPKixEkQqJmWk7LUbF3COU+ShU8oVbpHHr/Pieuaa0KDZT6s+jDigkbyUuIrFWgWPAG/SA6BIRvFx+KAsY3T6onV9KNQP4df7o2neu1tpe6qAVjeWxRvhtdGu46avb7VbSxQGfyWO0XKTRZ9Ea6WN7wJ56bw4oNazNSb8PsZhQD6RWlUaLBrOVWRA96gjVhX0XJ8jub3z1wjMyPxfzAJTYPGv4jNEbq0310Tkqzw8bKjIV X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:A0SfX3mQHQMwvf/mcmHFJYAzofcR57AmXFKFdmEPPQs0EBVIX49BmkTgCZxsuN1nr/0wlCR0v2U5vlrggDNx2cB/VXz/04e0R0oGFFvFXP2DvtLRcSZ9sn4azEDkuedTIuWGR7BnHjHo5jzV47YJEz5Tbkooi30fjWNvGUs3EOiFA/8UNEXZOT4+lQ/Z2VLeUMDVIksKZ06NtWNet7mCVuAncQlS9ed2GHAcCE3CfjL4nnHm7Ircl0BkyCD0GSY+tSSdDqBUQqZ65o8lpChbIs6Ncd+2q4jHoRYU4NyYibEnWyoMkkRGVdGgxuvMJBndVYBAo/V8RCCKMzVgmB/0QYbjXQ2YmtV2m0MCYIGfXTDiN3SUd35F2TNv+JCf4QthY2EQhT2lqBLAxDfzONDzjfVvn3gqhZIuxuo8g8XsszI9TlzfrsShZoarnnx5qL6sjHtT2pziYPI/bXRVUD1WHQMHxXZtik//FzJQrDl8ErnVf9N3ZVdYvnmGyEkAB0tBk2eotVLQlXIZfh/Z530IwfW16M8+LxPyedkYw1O4nzCP/rXqk4N8EJt8Qc7WNKylP+EXHcDjkOeqBNOxRByquQSKn+6oDCMBBxZFBTq8KEpO4VMQ7b2SAu1JKsK9aJ0l+43pxx8M6+k9+9AnPPd5Ct6rhz0lmRoMd1cJCF/pjGnIu//uf7CKYkAGDIX1n/dTUIJRvxk6zb33JlAlfClxeZxJUDwDuBe3B/YY5NjZttfLqrpsq8ASgyP1TXg/6Ofsyug4aO5/V7kbh3vwjko8/LbXmT0RDv/BmV4yUOpuwCgTEp47T9KVJbANH48dUk2SAxHG7C/iPwSWYB/0cRH6+npMyKI+K630LUVS3jCA/AfXO3Vuhk83+erNhF9XfRVIQdKNcX17ToVXy34SWsXgvo3JY40tDyRsBGAczuqgMlI= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:dQMLiiYO3nnVziezj7plEmFmin3HfVRw87cqphnsxg8PNfOw125YY55NhRbMfaBFVdCYZ8AP+8wHVkXSZ+Xb31b47NJaYgrpP8m71LAepNHJCLj5ZGLe1PvFoHhyHDzETEsrq+UJZyv1NKsf/FLssjHRuCgzPr3PnDU3e4ZycMi5/PeSrHUoUxBvyJglVyzBfHxRxDr0vZos5SmfrwOC0kcxUqBEZtnrzsz/BeIfJhREQWqFQnzPei2b/E3vZFO3LaqCOxDbitg/cHwy8b0i6P8EoNJVuFR9rN7CM5wN7Pz4dMmHCkwbeNg4o9FLDfKkyycHJy3whOHs/5lofqjIAc6Q6+fuDAzhY6D19PthibNChJDyT5QifJVsn5vBQzuknaNPzVIuBrVcgaSDEYCbWMLTWdqWhU9ql8DxoUJAXpAObqCqrlMIliELiRIwpLKnit+5URr0q+ouzY6mmJ0Vskvyjoo2ixH1z4JHJ+FPinpNuQG/LyBSfu/5N6YH5Dk18PduMM3t7Pdk96xDFiehQqXfFW4fjLzxuKmw66AIEVYcSi2uyF5rKwJkim29JDvXYbuqFA2oKY0gVDmnoaWeU6+Wd4KQSvYQaWHhnhRf4vUDUrtMsM6fmHADjiOZKkPd9XWcATisHZ6xVdHSo+Ak5P9P4QaRsycaDnqxkeg5xrM= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:DnA5vsjebX29GkgpaI2mOrhe+IrnChgmx1QauLVBN7TJZA+sfY2dlI0f75+oxb/5ZztietTrSvnV3sdMtEQQVyvPq8sfdU61uRcVdM3moqZU3EOyKyZtSHqphmeEQR8DiVzEOdhgCbD9MWv+WFHZDOg5sItEeNwPmoQ99NBZhrVg9FFbDseVwfefQivbhtmaweJumdRW6QHa1zcCdnBgTkLJ1YQpfjwzORv91eELCRIe2QbBAzJLSd90XGmDFobgpKieYBQdBiGc5HT3rQ3LR2OWf+22SZAbraAFbxA0mLR/+dX8V+3XwEh4mUdIZNTX7jCdTBjfFtUnNLPN8iFtYydtq08X83/9+JO6BFk9kO9u6psy8WBed7nV9Wwvjokk4aKurBV0HciodNs/Fo8OK0oN4SPuh87CSuN1N7WVFuM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(158342451672863)(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:6lMwvzU7hrhtdf7E1IEBN518b0JTwV2zOrBZsfEz?= =?us-ascii?Q?R6InAHLHxfMW5qN9f6fpPc2vOEQuJLFHkSbiqbLx8quQtXX5N2ICUuten7nc?= =?us-ascii?Q?CIPenWQAhmS8PFHrF830C74KWDEeJtob+AcIKdAyExPkZMm1YVSiyAQLo+tp?= =?us-ascii?Q?sU9l1smFT0v4tcO9GbX6F4ynfXczgbM+X6bb+CFOlD8LROmD/ANSCIBicHD+?= =?us-ascii?Q?LIU2JEK5bs1XZVZSQqshinlidEhg5uSIx5tvQFmGaezLFVRMVfs0/6YZjm5X?= =?us-ascii?Q?h+53Cj0m57okGz3I7OMbH6dSBoxVfzC4gJCgvT6FmrgmAQQgc5pt87qdgZxW?= =?us-ascii?Q?Lnqiq10YgZNaj69UpImg61D6Iluzp/0ponqiO+xnZJKDOUeUP4U4QemnMOjR?= =?us-ascii?Q?T6QcTItahzfZUviyO4x6KV68qN3Kyt8YzEY1MvuPatNbwOs4P43aB43neQ7m?= =?us-ascii?Q?D9LlkMoNZHK0M9XUe1MZ5eo/znUntM3SBJWg6KHfnXdb3P1YxcKa33kL2+sK?= =?us-ascii?Q?UndbyNRlVzLS1xYZkah8KVsd9Wyr/wiTwBXBAHq0+ev1ODRJVlKt7FCLvH7q?= =?us-ascii?Q?pyGHYP0skTghf5YVw5W/lnhF6BjRJQechrkNMoGnYRcbfHy/uqtkgUEPEmE0?= =?us-ascii?Q?A6F0WACLBFY7QhypLANm/nC1LDMIYsw1ubXfF7YjuXmM+Upw0BxIQSiFfetV?= =?us-ascii?Q?cSm5asr0KyrYMuKOvKzuAk/iczNGPOQnS6K6v4kSIE+MqyISTFIOESteORRr?= =?us-ascii?Q?rJHrAxRGADwLP2CEN9V+mJQtU91pPn5jWnB/RhnR2Tm1xQwZKagCEm45PVo/?= =?us-ascii?Q?uWQqs7aCF3RSO4gMlOuHcwWl1PdPx1Nh86UtNujIFGG18abqsgYZArzJg3V/?= =?us-ascii?Q?D2Wn1sVURB0X5ibKQvn+2fCkJDYeJ7ANE0wERSQ2KFr3H2COuEopLlt3gn+n?= =?us-ascii?Q?t/fWSXhzyZ9X86SSOzma7grsEX5pswu4MI3U2cZuG6IaPjYoDjfC8kVWAMRD?= =?us-ascii?Q?V7Gj/bwzaq+DojTDWDyLgp/LmeVEmYKceROeYssU4uRC0g/CQZiF0gG+NA6v?= =?us-ascii?Q?m59WXWlmkivQcFeDIOR2snBk84/RHj99Uymdfz2YoTpqrZm4fb00be6UNuDU?= =?us-ascii?Q?0XYQoeFlDNau8gTJewCv0UFWWLTsHEHk2vP2iDbW+Mbc48vSfYtTJk4nvfLR?= =?us-ascii?Q?nPlAbfrZ4PS/uqb8LEkeItMzVn6/re9R2/qU1wT5eeN4pmUHlI91pCTG/g?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(575784001)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(53946003)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(2870700001)(76176999)(5660300001)(5890100001)(6506006)(6486002)(66066001)(50466002)(36756003)(23676002)(7736002)(6916009)(47776003)(305945005)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:RfCPvRxi+G7eOrZNDtHxgNVRh94GajY0P2g8hvd?= =?us-ascii?Q?DYxTn/PDwdt6f2EeVspynaG3DHbjX3OtaxRA8wcV9+GRlrQCkhZouWZFxVoF?= =?us-ascii?Q?nCufp6AIMTT6NTsY3NZx1vc3xc8KwN3um4elSuopDD4jGzrNb3ZRxEztuyJY?= =?us-ascii?Q?DtPEvBc/Oh61bCGOjhs6WeSDvq/+kK7IKjuKuFhW52KHuyMrHjCkpkxh6D/Y?= =?us-ascii?Q?jN1Bp2XJIalNWXga0ehyGne8Bpq40RSaNNnQ2Qc245oOEDs8TjrjDx9xcy+X?= =?us-ascii?Q?/aZQlBTpn6ATQgBawgx7vjS2oywbsxvqsqbls21/G/yeMOevFMDgh23YMewF?= =?us-ascii?Q?Vj0mZ6Q8A9b1H4FqxZ1gqKyJ8DYTrKnIvMnLrD0os2Uy4Uxd6d3EiBEcoNi3?= =?us-ascii?Q?8v+k6YBVeRLuD9T50p0Amz4AeQ7BvMFCILv1rNZROANeecl/aFu7oB3wCzz5?= =?us-ascii?Q?MDFMiTKZYHVx5+fKRvJfhXBEh3iETGaPQTjsg3e/r4OWXyi1ctcsCSQuCNiX?= =?us-ascii?Q?MqYlkSkx1nc4sVik+hM0xf1SsWMjjXlpdcXpDu/tZOEhbto2SKI6k7TZ0ajY?= =?us-ascii?Q?1t/VMQGmm4ExhkIYM6OLOOI2lqu6udc/ebfe5lpMx9KOzneOG/29DUbANIxF?= =?us-ascii?Q?kfYEE5Syv4NIyC1aTYAM1hOhJ/X2zWKyH2K1S8442qsqwXc+z0cEKm8OQ0d2?= =?us-ascii?Q?0kofoWnmcsrmQ7BTuvFAUP9XP58Y53LOrliM4vJCLJsXjE5cHU1t56D0ehjy?= =?us-ascii?Q?rrwGNuMEQ4iM9oa8OmnthWYFMtVMKB2yR39l1ImszU8lQMkzbuMUvSrTvwkw?= =?us-ascii?Q?Yoo8482KGNeHij85m0XQdYLMbgIsoI1NHwYMi9iiMx2+4Zkct9Z5w/lDfXjW?= =?us-ascii?Q?fvvQVHsd3qXE2VWao/eiGRJNpedkaFJ06BsUSZ+ZaWU7NjOg0VKAYkIGXDp9?= =?us-ascii?Q?ASo5GCMwlduBGDYSaIZ+jAwuSEp+2h/MPlhyPfZeKAZC340IEhVcpN5z6KNQ?= =?us-ascii?Q?aGkeyPh7bs+QnLnt7gXYwfS7PlfEJNCRsPm7rW0BImKXpslDKvjFfx5/r554?= =?us-ascii?Q?dy8TDAt4bAIrlNXjYs89O7ECfc6uE8RdMLXZqYK1T0ifJDa+d7i4zZ5Haxsd?= =?us-ascii?Q?S2PTEB1aEbRF+heW8KGdWaYDz30/+iHw4?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:4Yh3YLXr4NKEXMJYPFCDvDO3IOGyqTR65X8sNwmv?= =?us-ascii?Q?ivgwfvrlGjrM+RZYC9vfNGjhgbmPwzoqLxVWmhzY40mdIOzBjMPbmtr+aK20?= =?us-ascii?Q?eJsSdJFhXgyrOONimT/qUbZdYTBNbnFN7XlnkyIO2g/dWWdzTbUSqZmr/DdW?= =?us-ascii?Q?M6952Ze9t6xZ81cfXPQdTrfLCdxTAVrlyYBjZPU2rTvomHS3BA9QksR/4A2F?= =?us-ascii?Q?XS7wFIL2jWPcfFUZbeuSOBZL3J0o9xktXiKRgpJ7W9yNRpxrCNTja2tLcwoL?= =?us-ascii?Q?KbpT0pXHzabueAIQnuAgpN59sog7huCMzbC03NV7QnxII/abBpkEKo8C2eTQ?= =?us-ascii?Q?t9Ot2J9/j1xJ9MOVp6b2uYB0bhWw2dELoxQOYuBqH4OeyojU241CR9CCi0L6?= =?us-ascii?Q?eptmZV2aohjrhqWfSGra49FR9bpu4B6NBIawPQNrwX5TzdmgLznBHVOQAbY4?= =?us-ascii?Q?aicep1cSiUVoxiMLlQorQX7F/qBpDgijpl+ZLxejdc8cuVcnW8JK6jEpwjGD?= =?us-ascii?Q?biGeb5x+cyLVWmnhROLObdExQooJk5ZrNZYHQdgs4mW9wZAav0FvixyaHGKr?= =?us-ascii?Q?2YxJU4em2jHMqPMtNsJfHjEqCa9cHcrngrS9ABL74/il6OW5KqpbxsYJ4hRT?= =?us-ascii?Q?mIbMGfQRinfd9sVQddoWFcYGXHaPiUdNWRTDiYXFu+OZ0j4z0l5Nw9NvuSZn?= =?us-ascii?Q?hiY9orpaduV84xulR7auZQxpwwc5nDnrhcul2hXed+BO/qCph7rl0aTEFuId?= =?us-ascii?Q?A/omHY2P78QVQL8JulBqmFE4O4AiJ0c3CPt5YvySkXJBsealJdKDo7K3Mnor?= =?us-ascii?Q?OQ4kJ8AOLxO7ZEUJ5uI4V9vcGXSjMd7z69M3zDUfJ/4l3ujsjlUxCxdmVawL?= =?us-ascii?Q?jEehVb/7x1T5h6D+AiWzHiGCLDNIwoC+fDYFy/TOpSeuZcS5S5kimspAe7X9?= =?us-ascii?Q?xc6F+i3J6DJlnt97HBZvvukxdGwhLbif049pHMtXcEYhmdW+w6hcuf8K8x6E?= =?us-ascii?Q?Nac=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:OH3geAlD2eba5DxLRF6UsPr5iuuzXyT0QXGDSWhfj8Ajdz3etijs/DkomssTD6DYDxRaYVZkjVmVqz0+QKKqY+8DKmROy+xnfegvdcT2T0rLCso9y5xWEf18PZdHemW4zvy0IytX+QWrWyruoATHfy+WGtlNlJp4sqlgO/ObAXodUPqbczTAGJMQ0Mo/mFbaRRqTyOoo7HL9N6eAQCuv1BILc7CwyDwpVm8r/b0XLHW4NL101tVqFj3tO8mdyYZyPIw398IIY9RDmQ3g8HnqbdgfpTLBd7ysyswMX02xjDz5Q6EgmRRN5kTx0VpFh1VSibU8qlQv0QHKmzzf/I5YTQ2zi61Yt6+eeWWyGu56UpaG4gDkwfD9kSpIbaGK+xSEx5UCwB87y+3uAs8ckJrV3WVoVoNJp0O/xee2kZtffE8WP+NuDQH4r8Y4kPbCdSe9nA+BrjXvYTtGUXa3+iuTmM8AC0KPFECmTEvuoR57345d4TN5GypOnVeKD6Fem+4d; 24:Hqc+6O/otxo+ic56trn9Z0KRK7zjcxxtmcT52UbpjOe+DWTVCxxHW4hIrQGQv8LR74kINqBdntdNpuAILoP9+Lv+fUKZmq5SzPrG2zvb7Sc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:4XcHbBA5tHrL0S7Utc/D6Y4BRxqqSBlJziGavN9V5C2ftI2XAbxefRAlga1uOjWETv57qYDNxHjC0sskS0TvKXL6KDGZcBvsn/uTZM2lqccjDWja/GxSNe+oo4d0mZK+XY11wiXl/yBudLqYc5vKBIJScPRuFTeC64QJkgjGDZUU+B6bhfCR+mWidFSr+36lv3HlAML8faEAkMQpxQLw6AzwNnPsWENYZ8LtfRkH1R5BEtESnaLIT1zhLhDnyiMwfj0MBdHkfHg1Z+xzOZJLYOQBOGWeUR98b8IywAV37gNSzRKntAWEXKCidDxo0kKCn3zghppFqURbidFvhdHBG2AUtuUmQ+9XwKvWlCX1ntKHDjhak9EBlCbzm3sfJ/fJkTsOP/zbGxBPnFEo28Tr58lkoaBDA6KhHHTvQqvNM4bOdMxC5mnDlMvlcdvwLo6V3bEd9WzjrPz3RStjJxYWddhBYZE5pgC36ljzRofhxG/blgc/FU/8B61rB0U/mzQOy36P1mP58476ULdRBNQTrW3Tvv+LsDNXgG3ShkT06TFForW9jf+trivAftp2X+Cof/wFILw6AjIvajyBJR3yZl5pKbScSpJx4sPUDVlxWlsnllAfa/hfmKFmKNPfBSudcv6gTwAEA9NbUzY+76brr+nAdi+RkL2zubkLaD6M0vRFXalmMa+8Febpk+LwpKsUVSqWG0xv/GlSQbMqdHdhprMkNSYQU1S7jpWkBRRIyDpCmvXdVJkba6IT1xVqtLaFeHfaqBThXd4rLGoQz9OwzQI+JMZsUrYH1SEPSJ7GLXE= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:N74ObQy+s1RIuhuvhQxfyHOBkcuHLCTq4PMXIRbmPw+uqq005O47ZiS8F5VjvEGslOx4aUKkS0FtTku5WDdYipie9/xhOB4dVh2RJEIcKH5EYHHZdLDN+MkOdVDPg0nB53dqyANp1IgTLZVAXAa2Rx0LO2mmEj9vq0ba14kS2Bw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:19.8650 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.113 Subject: [Qemu-devel] [PATCH v5 02/13] char: add backend hotswap handler X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Frontends should have an interface to setup the handler of a backend change. The interface will be used in the next commits Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau --- include/chardev/char-fe.h | 5 +++++ backends/rng-egd.c | 2 +- chardev/char-fe.c | 4 +++- chardev/char-mux.c | 1 + gdbstub.c | 2 +- hw/arm/pxa2xx.c | 3 ++- hw/arm/strongarm.c | 2 +- hw/char/bcm2835_aux.c | 2 +- hw/char/cadence_uart.c | 2 +- hw/char/debugcon.c | 2 +- hw/char/digic-uart.c | 2 +- hw/char/escc.c | 2 +- hw/char/etraxfs_ser.c | 2 +- hw/char/exynos4210_uart.c | 2 +- hw/char/grlib_apbuart.c | 2 +- hw/char/imx_serial.c | 2 +- hw/char/ipoctal232.c | 2 +- hw/char/lm32_juart.c | 2 +- hw/char/lm32_uart.c | 2 +- hw/char/mcf_uart.c | 2 +- hw/char/milkymist-uart.c | 2 +- hw/char/pl011.c | 2 +- hw/char/sclpconsole-lm.c | 2 +- hw/char/sclpconsole.c | 2 +- hw/char/serial.c | 2 +- hw/char/sh_serial.c | 2 +- hw/char/spapr_vty.c | 2 +- hw/char/stm32f2xx_usart.c | 3 ++- hw/char/terminal3270.c | 2 +- hw/char/virtio-console.c | 4 ++-- hw/char/xen_console.c | 2 +- hw/char/xilinx_uartlite.c | 2 +- hw/ipmi/ipmi_bmc_extern.c | 2 +- hw/mips/boston.c | 2 +- hw/mips/mips_malta.c | 2 +- hw/misc/ivshmem.c | 2 +- hw/usb/ccid-card-passthru.c | 2 +- hw/usb/dev-serial.c | 2 +- hw/usb/redirect.c | 2 +- monitor.c | 4 ++-- net/colo-compare.c | 10 ++++++---- net/filter-mirror.c | 6 +++--- net/slirp.c | 2 +- net/vhost-user.c | 7 ++++--- qtest.c | 2 +- tests/test-char.c | 14 ++++++++++---- tests/vhost-user-test.c | 2 +- 47 files changed, 76 insertions(+), 57 deletions(-) diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h index 2cbb262..9f38060 100644 --- a/include/chardev/char-fe.h +++ b/include/chardev/char-fe.h @@ -4,6 +4,7 @@ #include "chardev/char.h" =20 typedef void IOEventHandler(void *opaque, int event); +typedef int BackendChangeHandler(void *opaque); =20 /* This is the backend as seen by frontend, the actual backend is * Chardev */ @@ -12,6 +13,7 @@ struct CharBackend { IOEventHandler *chr_event; IOCanReadHandler *chr_can_read; IOReadHandler *chr_read; + BackendChangeHandler *chr_be_change; void *opaque; int tag; int fe_open; @@ -54,6 +56,8 @@ Chardev *qemu_chr_fe_get_driver(CharBackend *be); * receive * @fd_read: callback to receive data from char * @fd_event: event callback + * @be_change: backend change callback; passing NULL means hot backend cha= nge + * is not supported and will not be attempted * @opaque: an opaque pointer for the callbacks * @context: a main loop context or NULL for the default * @set_open: whether to call qemu_chr_fe_set_open() implicitely when @@ -68,6 +72,7 @@ void qemu_chr_fe_set_handlers(CharBackend *b, IOCanReadHandler *fd_can_read, IOReadHandler *fd_read, IOEventHandler *fd_event, + BackendChangeHandler *be_change, void *opaque, GMainContext *context, bool set_open); diff --git a/backends/rng-egd.c b/backends/rng-egd.c index e7ce2ca..d2b9ce6 100644 --- a/backends/rng-egd.c +++ b/backends/rng-egd.c @@ -106,7 +106,7 @@ static void rng_egd_opened(RngBackend *b, Error **errp) =20 /* FIXME we should resubmit pending requests when the CDS reconnects. = */ qemu_chr_fe_set_handlers(&s->chr, rng_egd_chr_can_read, - rng_egd_chr_read, NULL, s, NULL, true); + rng_egd_chr_read, NULL, NULL, s, NULL, true); } =20 static void rng_egd_set_chardev(Object *obj, const char *value, Error **er= rp) diff --git a/chardev/char-fe.c b/chardev/char-fe.c index 3f90f05..7054863 100644 --- a/chardev/char-fe.c +++ b/chardev/char-fe.c @@ -216,7 +216,7 @@ void qemu_chr_fe_deinit(CharBackend *b, bool del) assert(b); =20 if (b->chr) { - qemu_chr_fe_set_handlers(b, NULL, NULL, NULL, NULL, NULL, true); + qemu_chr_fe_set_handlers(b, NULL, NULL, NULL, NULL, NULL, NULL, tr= ue); if (b->chr->be =3D=3D b) { b->chr->be =3D NULL; } @@ -235,6 +235,7 @@ void qemu_chr_fe_set_handlers(CharBackend *b, IOCanReadHandler *fd_can_read, IOReadHandler *fd_read, IOEventHandler *fd_event, + BackendChangeHandler *be_change, void *opaque, GMainContext *context, bool set_open) @@ -258,6 +259,7 @@ void qemu_chr_fe_set_handlers(CharBackend *b, b->chr_can_read =3D fd_can_read; b->chr_read =3D fd_read; b->chr_event =3D fd_event; + b->chr_be_change =3D be_change; b->opaque =3D opaque; if (cc->chr_update_read_handler) { cc->chr_update_read_handler(s, context); diff --git a/chardev/char-mux.c b/chardev/char-mux.c index 08570b9..4cda5e7 100644 --- a/chardev/char-mux.c +++ b/chardev/char-mux.c @@ -278,6 +278,7 @@ void mux_chr_set_handlers(Chardev *chr, GMainContext *c= ontext) mux_chr_can_read, mux_chr_read, mux_chr_event, + NULL, chr, context, true); } diff --git a/gdbstub.c b/gdbstub.c index ec4e4b2..e561244 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2003,7 +2003,7 @@ int gdbserver_start(const char *device) if (chr) { qemu_chr_fe_init(&s->chr, chr, &error_abort); qemu_chr_fe_set_handlers(&s->chr, gdb_chr_can_receive, gdb_chr_rec= eive, - gdb_chr_event, NULL, NULL, true); + gdb_chr_event, NULL, NULL, NULL, true); } s->state =3D chr ? RS_IDLE : RS_INACTIVE; s->mon_chr =3D mon_chr; diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c index 629e6c6..731ed08 100644 --- a/hw/arm/pxa2xx.c +++ b/hw/arm/pxa2xx.c @@ -1970,7 +1970,8 @@ static void pxa2xx_fir_realize(DeviceState *dev, Erro= r **errp) PXA2xxFIrState *s =3D PXA2XX_FIR(dev); =20 qemu_chr_fe_set_handlers(&s->chr, pxa2xx_fir_is_empty, - pxa2xx_fir_rx, pxa2xx_fir_event, s, NULL, tru= e); + pxa2xx_fir_rx, pxa2xx_fir_event, NULL, s, NUL= L, + true); } =20 static bool pxa2xx_fir_vmstate_validate(void *opaque, int version_id) diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index 7683edc..1fa082c 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -1247,7 +1247,7 @@ static void strongarm_uart_realize(DeviceState *dev, = Error **errp) strongarm_uart_can_receive, strongarm_uart_receive, strongarm_uart_event, - s, NULL, true); + NULL, s, NULL, true); } =20 static void strongarm_uart_reset(DeviceState *dev) diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c index 4d46ad6..370dc7e 100644 --- a/hw/char/bcm2835_aux.c +++ b/hw/char/bcm2835_aux.c @@ -279,7 +279,7 @@ static void bcm2835_aux_realize(DeviceState *dev, Error= **errp) BCM2835AuxState *s =3D BCM2835_AUX(dev); =20 qemu_chr_fe_set_handlers(&s->chr, bcm2835_aux_can_receive, - bcm2835_aux_receive, NULL, s, NULL, true); + bcm2835_aux_receive, NULL, NULL, s, NULL, tru= e); } =20 static Property bcm2835_aux_props[] =3D { diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index 4a2c124..3a9335c 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -485,7 +485,7 @@ static void cadence_uart_realize(DeviceState *dev, Erro= r **errp) fifo_trigger_update, s); =20 qemu_chr_fe_set_handlers(&s->chr, uart_can_receive, uart_receive, - uart_event, s, NULL, true); + uart_event, NULL, s, NULL, true); } =20 static void cadence_uart_init(Object *obj) diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c index 762e3d8..9b56fb8 100644 --- a/hw/char/debugcon.c +++ b/hw/char/debugcon.c @@ -92,7 +92,7 @@ static void debugcon_realize_core(DebugconState *s, Error= **errp) return; } =20 - qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, NULL, s, NULL, true); + qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, NULL, NULL, s, NULL, tru= e); } =20 static void debugcon_isa_realizefn(DeviceState *dev, Error **errp) diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c index 34306e1..6ebcb87 100644 --- a/hw/char/digic-uart.c +++ b/hw/char/digic-uart.c @@ -146,7 +146,7 @@ static void digic_uart_realize(DeviceState *dev, Error = **errp) DigicUartState *s =3D DIGIC_UART(dev); =20 qemu_chr_fe_set_handlers(&s->chr, uart_can_rx, uart_rx, - uart_event, s, NULL, true); + uart_event, NULL, s, NULL, true); } =20 static void digic_uart_init(Object *obj) diff --git a/hw/char/escc.c b/hw/char/escc.c index 3f78763..3546df3 100644 --- a/hw/char/escc.c +++ b/hw/char/escc.c @@ -1016,7 +1016,7 @@ static void escc_realize(DeviceState *dev, Error **er= rp) if (qemu_chr_fe_get_driver(&s->chn[i].chr)) { s->chn[i].clock =3D s->frequency / 2; qemu_chr_fe_set_handlers(&s->chn[i].chr, serial_can_receive, - serial_receive1, serial_event, + serial_receive1, serial_event, NULL, &s->chn[i], NULL, true); } } diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c index c1fba9f..a184026 100644 --- a/hw/char/etraxfs_ser.c +++ b/hw/char/etraxfs_ser.c @@ -233,7 +233,7 @@ static void etraxfs_ser_realize(DeviceState *dev, Error= **errp) =20 qemu_chr_fe_set_handlers(&s->chr, serial_can_receive, serial_receive, - serial_event, s, NULL, true); + serial_event, NULL, s, NULL, true); } =20 static void etraxfs_ser_class_init(ObjectClass *klass, void *data) diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c index b51d44a..a84d2c3 100644 --- a/hw/char/exynos4210_uart.c +++ b/hw/char/exynos4210_uart.c @@ -645,7 +645,7 @@ static void exynos4210_uart_realize(DeviceState *dev, E= rror **errp) =20 qemu_chr_fe_set_handlers(&s->chr, exynos4210_uart_can_receive, exynos4210_uart_receive, exynos4210_uart_even= t, - s, NULL, true); + NULL, s, NULL, true); } =20 static Property exynos4210_uart_properties[] =3D { diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c index 32d98ed..12d0c99 100644 --- a/hw/char/grlib_apbuart.c +++ b/hw/char/grlib_apbuart.c @@ -247,7 +247,7 @@ static int grlib_apbuart_init(SysBusDevice *dev) grlib_apbuart_can_receive, grlib_apbuart_receive, grlib_apbuart_event, - uart, NULL, true); + NULL, uart, NULL, true); =20 sysbus_init_irq(dev, &uart->irq); =20 diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c index af25030..70405cc 100644 --- a/hw/char/imx_serial.c +++ b/hw/char/imx_serial.c @@ -315,7 +315,7 @@ static void imx_serial_realize(DeviceState *dev, Error = **errp) DPRINTF("char dev for uart: %p\n", qemu_chr_fe_get_driver(&s->chr)); =20 qemu_chr_fe_set_handlers(&s->chr, imx_can_receive, imx_receive, - imx_event, s, NULL, true); + imx_event, NULL, s, NULL, true); } =20 static void imx_serial_init(Object *obj) diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c index 337a3e56..cc8c8dc 100644 --- a/hw/char/ipoctal232.c +++ b/hw/char/ipoctal232.c @@ -545,7 +545,7 @@ static void ipoctal_realize(DeviceState *dev, Error **e= rrp) if (qemu_chr_fe_get_driver(&ch->dev)) { qemu_chr_fe_set_handlers(&ch->dev, hostdev_can_receive, hostdev_receive, hostdev_event, - ch, NULL, true); + NULL, ch, NULL, true); DPRINTF("Redirecting channel %u to %s\n", i, ch->dev->label); } else { DPRINTF("Could not redirect channel %u, no chardev set\n", i); diff --git a/hw/char/lm32_juart.c b/hw/char/lm32_juart.c index 3948dcd..d75c835 100644 --- a/hw/char/lm32_juart.c +++ b/hw/char/lm32_juart.c @@ -119,7 +119,7 @@ static void lm32_juart_realize(DeviceState *dev, Error = **errp) LM32JuartState *s =3D LM32_JUART(dev); =20 qemu_chr_fe_set_handlers(&s->chr, juart_can_rx, juart_rx, - juart_event, s, NULL, true); + juart_event, NULL, s, NULL, true); } =20 static const VMStateDescription vmstate_lm32_juart =3D { diff --git a/hw/char/lm32_uart.c b/hw/char/lm32_uart.c index cff8c38..c4a3b9b 100644 --- a/hw/char/lm32_uart.c +++ b/hw/char/lm32_uart.c @@ -266,7 +266,7 @@ static void lm32_uart_realize(DeviceState *dev, Error *= *errp) LM32UartState *s =3D LM32_UART(dev); =20 qemu_chr_fe_set_handlers(&s->chr, uart_can_rx, uart_rx, - uart_event, s, NULL, true); + uart_event, NULL, s, NULL, true); } =20 static const VMStateDescription vmstate_lm32_uart =3D { diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index fe12ad5..56fa402 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -305,7 +305,7 @@ static void mcf_uart_realize(DeviceState *dev, Error **= errp) mcf_uart_state *s =3D MCF_UART(dev); =20 qemu_chr_fe_set_handlers(&s->chr, mcf_uart_can_receive, mcf_uart_recei= ve, - mcf_uart_event, s, NULL, true); + mcf_uart_event, NULL, s, NULL, true); } =20 static Property mcf_uart_properties[] =3D { diff --git a/hw/char/milkymist-uart.c b/hw/char/milkymist-uart.c index e19d0f6..548ee27 100644 --- a/hw/char/milkymist-uart.c +++ b/hw/char/milkymist-uart.c @@ -199,7 +199,7 @@ static void milkymist_uart_realize(DeviceState *dev, Er= ror **errp) MilkymistUartState *s =3D MILKYMIST_UART(dev); =20 qemu_chr_fe_set_handlers(&s->chr, uart_can_rx, uart_rx, - uart_event, s, NULL, true); + uart_event, NULL, s, NULL, true); } =20 static void milkymist_uart_init(Object *obj) diff --git a/hw/char/pl011.c b/hw/char/pl011.c index 33802f0..2aa277f 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -329,7 +329,7 @@ static void pl011_realize(DeviceState *dev, Error **err= p) PL011State *s =3D PL011(dev); =20 qemu_chr_fe_set_handlers(&s->chr, pl011_can_receive, pl011_receive, - pl011_event, s, NULL, true); + pl011_event, NULL, s, NULL, true); } =20 static void pl011_class_init(ObjectClass *oc, void *data) diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c index 1b15046..741c641 100644 --- a/hw/char/sclpconsole-lm.c +++ b/hw/char/sclpconsole-lm.c @@ -313,7 +313,7 @@ static int console_init(SCLPEvent *event) console_available =3D true; =20 qemu_chr_fe_set_handlers(&scon->chr, chr_can_read, - chr_read, NULL, scon, NULL, true); + chr_read, NULL, NULL, scon, NULL, true); =20 return 0; } diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c index 4a107a2..a92baa8 100644 --- a/hw/char/sclpconsole.c +++ b/hw/char/sclpconsole.c @@ -228,7 +228,7 @@ static int console_init(SCLPEvent *event) } console_available =3D true; qemu_chr_fe_set_handlers(&scon->chr, chr_can_read, - chr_read, NULL, scon, NULL, true); + chr_read, NULL, NULL, scon, NULL, true); =20 return 0; } diff --git a/hw/char/serial.c b/hw/char/serial.c index e1f1250..ab14ca4 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -897,7 +897,7 @@ void serial_realize_core(SerialState *s, Error **errp) qemu_register_reset(serial_reset, s); =20 qemu_chr_fe_set_handlers(&s->chr, serial_can_receive1, serial_receive1, - serial_event, s, NULL, true); + serial_event, NULL, s, NULL, true); fifo8_create(&s->recv_fifo, UART_FIFO_LENGTH); fifo8_create(&s->xmit_fifo, UART_FIFO_LENGTH); serial_reset(s); diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index ca9816d..ad043bd 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -400,7 +400,7 @@ void sh_serial_init(MemoryRegion *sysmem, qemu_chr_fe_init(&s->chr, chr, &error_abort); qemu_chr_fe_set_handlers(&s->chr, sh_serial_can_receive1, sh_serial_receive1, - sh_serial_event, s, NULL, true); + sh_serial_event, NULL, s, NULL, true); } =20 s->eri =3D eri_source; diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c index 8f02f3a..ddd1b00 100644 --- a/hw/char/spapr_vty.c +++ b/hw/char/spapr_vty.c @@ -84,7 +84,7 @@ static void spapr_vty_realize(VIOsPAPRDevice *sdev, Error= **errp) } =20 qemu_chr_fe_set_handlers(&dev->chardev, vty_can_receive, - vty_receive, NULL, dev, NULL, true); + vty_receive, NULL, NULL, dev, NULL, true); } =20 /* Forward declaration */ diff --git a/hw/char/stm32f2xx_usart.c b/hw/char/stm32f2xx_usart.c index 59872e6..268e435 100644 --- a/hw/char/stm32f2xx_usart.c +++ b/hw/char/stm32f2xx_usart.c @@ -207,7 +207,8 @@ static void stm32f2xx_usart_realize(DeviceState *dev, E= rror **errp) STM32F2XXUsartState *s =3D STM32F2XX_USART(dev); =20 qemu_chr_fe_set_handlers(&s->chr, stm32f2xx_usart_can_receive, - stm32f2xx_usart_receive, NULL, s, NULL, true); + stm32f2xx_usart_receive, NULL, NULL, + s, NULL, true); } =20 static void stm32f2xx_usart_class_init(ObjectClass *klass, void *data) diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c index 7b10a04..5adf95b 100644 --- a/hw/char/terminal3270.c +++ b/hw/char/terminal3270.c @@ -179,7 +179,7 @@ static void terminal_init(EmulatedCcw3270Device *dev, E= rror **errp) } terminal_available =3D true; qemu_chr_fe_set_handlers(&t->chr, terminal_can_read, - terminal_read, chr_event, t, NULL, true); + terminal_read, chr_event, NULL, t, NULL, true= ); } =20 static int read_payload_3270(EmulatedCcw3270Device *dev, uint32_t cda, diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index 0cb1668..afb4949 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -188,11 +188,11 @@ static void virtconsole_realize(DeviceState *dev, Err= or **errp) */ if (k->is_console) { qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, - NULL, vcon, NULL, true); + NULL, NULL, vcon, NULL, true); virtio_serial_open(port); } else { qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, - chr_event, vcon, NULL, false); + chr_event, NULL, vcon, NULL, false); } } } diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c index f9af8ca..c4e8c72 100644 --- a/hw/char/xen_console.c +++ b/hw/char/xen_console.c @@ -246,7 +246,7 @@ static int con_initialise(struct XenDevice *xendev) =20 xen_be_bind_evtchn(&con->xendev); qemu_chr_fe_set_handlers(&con->chr, xencons_can_receive, - xencons_receive, NULL, con, NULL, true); + xencons_receive, NULL, NULL, con, NULL, true); =20 xen_pv_printf(xendev, 1, "ring mfn %d, remote port %d, local port %d, limit %zd\n= ", diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c index 71ed2fc..2a8bc1e 100644 --- a/hw/char/xilinx_uartlite.c +++ b/hw/char/xilinx_uartlite.c @@ -212,7 +212,7 @@ static void xilinx_uartlite_realize(DeviceState *dev, E= rror **errp) XilinxUARTLite *s =3D XILINX_UARTLITE(dev); =20 qemu_chr_fe_set_handlers(&s->chr, uart_can_rx, uart_rx, - uart_event, s, NULL, true); + uart_event, NULL, s, NULL, true); } =20 static void xilinx_uartlite_init(Object *obj) diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c index 329b03e..182de58 100644 --- a/hw/ipmi/ipmi_bmc_extern.c +++ b/hw/ipmi/ipmi_bmc_extern.c @@ -453,7 +453,7 @@ static void ipmi_bmc_extern_realize(DeviceState *dev, E= rror **errp) } =20 qemu_chr_fe_set_handlers(&ibe->chr, can_receive, receive, - chr_event, ibe, NULL, true); + chr_event, NULL, ibe, NULL, true); } =20 static int ipmi_bmc_extern_post_migrate(void *opaque, int version_id) diff --git a/hw/mips/boston.c b/hw/mips/boston.c index a4677f7..146be2a 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -533,7 +533,7 @@ static void boston_mach_init(MachineState *machine) chr =3D qemu_chr_new("lcd", "vc:320x240"); qemu_chr_fe_init(&s->lcd_display, chr, NULL); qemu_chr_fe_set_handlers(&s->lcd_display, NULL, NULL, - boston_lcd_event, s, NULL, true); + boston_lcd_event, NULL, s, NULL, true); =20 ahci =3D pci_create_simple_multifunction(&PCI_BRIDGE(&pcie2->root)->se= c_bus, PCI_DEVFN(0, 0), diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c index 95cdabb..1bb6f89 100644 --- a/hw/mips/mips_malta.c +++ b/hw/mips/mips_malta.c @@ -570,7 +570,7 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *ad= dress_space, chr =3D qemu_chr_new("fpga", "vc:320x200"); qemu_chr_fe_init(&s->display, chr, NULL); qemu_chr_fe_set_handlers(&s->display, NULL, NULL, - malta_fgpa_display_event, s, NULL, true); + malta_fgpa_display_event, NULL, s, NULL, true= ); =20 s->uart =3D serial_mm_init(address_space, base + 0x900, 3, uart_irq, 230400, uart_chr, DEVICE_NATIVE_ENDIAN); diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c index 2f0819d..a857e50 100644 --- a/hw/misc/ivshmem.c +++ b/hw/misc/ivshmem.c @@ -894,7 +894,7 @@ static void ivshmem_common_realize(PCIDevice *dev, Erro= r **errp) } =20 qemu_chr_fe_set_handlers(&s->server_chr, ivshmem_can_receive, - ivshmem_read, NULL, s, NULL, true); + ivshmem_read, NULL, NULL, s, NULL, true); =20 if (ivshmem_setup_interrupts(s, errp) < 0) { error_prepend(errp, "Failed to initialize interrupts: "); diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c index ac1725e..e9f58c9 100644 --- a/hw/usb/ccid-card-passthru.c +++ b/hw/usb/ccid-card-passthru.c @@ -348,7 +348,7 @@ static int passthru_initfn(CCIDCardState *base) qemu_chr_fe_set_handlers(&card->cs, ccid_card_vscard_can_read, ccid_card_vscard_read, - ccid_card_vscard_event, card, NULL, true); + ccid_card_vscard_event, NULL, card, NULL, true); ccid_card_vscard_send_init(card); } else { error_report("missing chardev"); diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c index bfbf7cd..dc145a6 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -502,7 +502,7 @@ static void usb_serial_realize(USBDevice *dev, Error **= errp) } =20 qemu_chr_fe_set_handlers(&s->cs, usb_serial_can_read, usb_serial_read, - usb_serial_event, s, NULL, true); + usb_serial_event, NULL, s, NULL, true); usb_serial_handle_reset(dev); =20 if (chr->be_open && !dev->attached) { diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index aa22d69..115efb9 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -1399,7 +1399,7 @@ static void usbredir_realize(USBDevice *udev, Error *= *errp) /* Let the backend know we are ready */ qemu_chr_fe_set_handlers(&dev->cs, usbredir_chardev_can_read, usbredir_chardev_read, usbredir_chardev_event, - dev, NULL, true); + NULL, dev, NULL, true); =20 dev->vmstate =3D qemu_add_vm_change_state_handler(usbredir_vm_state_change, dev); diff --git a/monitor.c b/monitor.c index 4031876..0cdbb21 100644 --- a/monitor.c +++ b/monitor.c @@ -4108,12 +4108,12 @@ void monitor_init(Chardev *chr, int flags) =20 if (monitor_is_qmp(mon)) { qemu_chr_fe_set_handlers(&mon->chr, monitor_can_read, monitor_qmp_= read, - monitor_qmp_event, mon, NULL, true); + monitor_qmp_event, NULL, mon, NULL, true); qemu_chr_fe_set_echo(&mon->chr, true); json_message_parser_init(&mon->qmp.parser, handle_qmp_command); } else { qemu_chr_fe_set_handlers(&mon->chr, monitor_can_read, monitor_read, - monitor_event, mon, NULL, true); + monitor_event, NULL, mon, NULL, true); } =20 qemu_mutex_lock(&monitor_lock); diff --git a/net/colo-compare.c b/net/colo-compare.c index 6d500e1..abfc23c 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -543,7 +543,7 @@ static void compare_pri_chr_in(void *opaque, const uint= 8_t *buf, int size) =20 ret =3D net_fill_rstate(&s->pri_rs, buf, size); if (ret =3D=3D -1) { - qemu_chr_fe_set_handlers(&s->chr_pri_in, NULL, NULL, NULL, + qemu_chr_fe_set_handlers(&s->chr_pri_in, NULL, NULL, NULL, NULL, NULL, NULL, true); error_report("colo-compare primary_in error"); } @@ -560,7 +560,7 @@ static void compare_sec_chr_in(void *opaque, const uint= 8_t *buf, int size) =20 ret =3D net_fill_rstate(&s->sec_rs, buf, size); if (ret =3D=3D -1) { - qemu_chr_fe_set_handlers(&s->chr_sec_in, NULL, NULL, NULL, + qemu_chr_fe_set_handlers(&s->chr_sec_in, NULL, NULL, NULL, NULL, NULL, NULL, true); error_report("colo-compare secondary_in error"); } @@ -588,9 +588,11 @@ static void *colo_compare_thread(void *opaque) s->worker_context =3D g_main_context_new(); =20 qemu_chr_fe_set_handlers(&s->chr_pri_in, compare_chr_can_read, - compare_pri_chr_in, NULL, s, s->worker_context, = true); + compare_pri_chr_in, NULL, NULL, + s, s->worker_context, true); qemu_chr_fe_set_handlers(&s->chr_sec_in, compare_chr_can_read, - compare_sec_chr_in, NULL, s, s->worker_context, = true); + compare_sec_chr_in, NULL, NULL, + s, s->worker_context, true); =20 s->compare_loop =3D g_main_loop_new(s->worker_context, FALSE); =20 diff --git a/net/filter-mirror.c b/net/filter-mirror.c index 52d978f..62a8265 100644 --- a/net/filter-mirror.c +++ b/net/filter-mirror.c @@ -112,7 +112,7 @@ static void redirector_chr_read(void *opaque, const uin= t8_t *buf, int size) =20 if (ret =3D=3D -1) { qemu_chr_fe_set_handlers(&s->chr_in, NULL, NULL, NULL, - NULL, NULL, true); + NULL, NULL, NULL, true); } } =20 @@ -124,7 +124,7 @@ static void redirector_chr_event(void *opaque, int even= t) switch (event) { case CHR_EVENT_CLOSED: qemu_chr_fe_set_handlers(&s->chr_in, NULL, NULL, NULL, - NULL, NULL, true); + NULL, NULL, NULL, true); break; default: break; @@ -245,7 +245,7 @@ static void filter_redirector_setup(NetFilterState *nf,= Error **errp) =20 qemu_chr_fe_set_handlers(&s->chr_in, redirector_chr_can_read, redirector_chr_read, redirector_chr_event, - nf, NULL, true); + NULL, nf, NULL, true); } =20 if (s->outdev) { diff --git a/net/slirp.c b/net/slirp.c index 6a6d727..9fbc949 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -778,7 +778,7 @@ static int slirp_guestfwd(SlirpState *s, const char *co= nfig_str, fwd->slirp =3D s->slirp; =20 qemu_chr_fe_set_handlers(&fwd->hd, guestfwd_can_read, guestfwd_rea= d, - NULL, fwd, NULL, true); + NULL, NULL, fwd, NULL, true); } return 0; =20 diff --git a/net/vhost-user.c b/net/vhost-user.c index a042ec6..36f32a2 100644 --- a/net/vhost-user.c +++ b/net/vhost-user.c @@ -211,7 +211,7 @@ static void chr_closed_bh(void *opaque) vhost_user_stop(queues, ncs); =20 qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, net_vhost_user_event, - opaque, NULL, true); + NULL, opaque, NULL, true); =20 if (err) { error_report_err(err); @@ -257,7 +257,7 @@ static void net_vhost_user_event(void *opaque, int even= t) =20 g_source_remove(s->watch); s->watch =3D 0; - qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, NULL, + qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, NULL, NULL, NULL, NULL, false); =20 aio_bh_schedule_oneshot(ctx, chr_closed_bh, opaque); @@ -305,7 +305,8 @@ static int net_vhost_user_init(NetClientState *peer, co= nst char *device, return -1; } qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, - net_vhost_user_event, nc0->name, NULL, tr= ue); + net_vhost_user_event, NULL, nc0->name, NU= LL, + true); } while (!s->started); =20 assert(s->vhost_net); diff --git a/qtest.c b/qtest.c index 9a5d1dc..88a09e9 100644 --- a/qtest.c +++ b/qtest.c @@ -691,7 +691,7 @@ void qtest_init(const char *qtest_chrdev, const char *q= test_log, Error **errp) =20 qemu_chr_fe_init(&qtest_chr, chr, errp); qemu_chr_fe_set_handlers(&qtest_chr, qtest_can_read, qtest_read, - qtest_event, &qtest_chr, NULL, true); + qtest_event, NULL, &qtest_chr, NULL, true); qemu_chr_fe_set_echo(&qtest_chr, true); =20 inbuf =3D g_string_new(""); diff --git a/tests/test-char.c b/tests/test-char.c index 87c724c..527b785 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -182,6 +182,7 @@ static void char_mux_test(void) fe_can_read, fe_read, fe_event, + NULL, &h1, NULL, true); =20 @@ -190,6 +191,7 @@ static void char_mux_test(void) fe_can_read, fe_read, fe_event, + NULL, &h2, NULL, true); qemu_chr_fe_take_focus(&chr_be2); @@ -213,7 +215,8 @@ static void char_mux_test(void) h1.read_count =3D 0; =20 /* remove first handler */ - qemu_chr_fe_set_handlers(&chr_be1, NULL, NULL, NULL, NULL, NULL, true); + qemu_chr_fe_set_handlers(&chr_be1, NULL, NULL, NULL, NULL, + NULL, NULL, true); qemu_chr_be_write(base, (void *)"hello", 6); g_assert_cmpint(h1.read_count, =3D=3D, 0); g_assert_cmpint(h2.read_count, =3D=3D, 0); @@ -311,13 +314,13 @@ static void char_socket_test(void) =20 qemu_chr_fe_init(&be, chr, &error_abort); qemu_chr_fe_set_handlers(&be, socket_can_read, socket_read, - NULL, &d, NULL, true); + NULL, NULL, &d, NULL, true); =20 chr_client =3D qemu_chr_new("client", tmp); qemu_chr_fe_init(&client_be, chr_client, &error_abort); qemu_chr_fe_set_handlers(&client_be, socket_can_read_hello, socket_read_hello, - NULL, &d, NULL, true); + NULL, NULL, &d, NULL, true); g_free(tmp); =20 d.conn_expected =3D true; @@ -387,6 +390,7 @@ static void char_pipe_test(void) fe_can_read, fe_read, fe_event, + NULL, &fe, NULL, true); =20 @@ -435,7 +439,7 @@ static void char_udp_test(void) d.chr =3D chr; qemu_chr_fe_init(&be, chr, &error_abort); qemu_chr_fe_set_handlers(&be, socket_can_read_hello, socket_read_hello, - NULL, &d, NULL, true); + NULL, NULL, &d, NULL, true); ret =3D qemu_chr_write_all(chr, (uint8_t *)"hello", 5); g_assert_cmpint(ret, =3D=3D, 5); =20 @@ -527,6 +531,7 @@ static void char_file_test(void) fe_can_read, fe_read, fe_event, + NULL, &fe, NULL, true); =20 g_assert_cmpint(fe.last_event, !=3D, CHR_EVENT_BREAK); @@ -587,6 +592,7 @@ static void char_null_test(void) fe_can_read, fe_read, fe_event, + NULL, NULL, NULL, true); =20 ret =3D qemu_chr_fe_write(&be, (void *)"buf", 4); diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c index b3cc045..d4da09f 100644 --- a/tests/vhost-user-test.c +++ b/tests/vhost-user-test.c @@ -464,7 +464,7 @@ static void test_server_create_chr(TestServer *server, = const gchar *opt) =20 qemu_chr_fe_init(&server->chr, chr, &error_abort); qemu_chr_fe_set_handlers(&server->chr, chr_can_read, chr_read, - chr_event, server, NULL, true); + chr_event, NULL, server, NULL, true); } =20 static void test_server_listen(TestServer *server) --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499263479738117.34046645863828; Wed, 5 Jul 2017 07:04:39 -0700 (PDT) Received: from localhost ([::1]:46391 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkuv-00061m-4Q for importer@patchew.org; Wed, 05 Jul 2017 10:04:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44684) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSksu-0004hx-81 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSkss-0007js-Ex for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:28 -0400 Received: from mail-eopbgr40113.outbound.protection.outlook.com ([40.107.4.113]:64062 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSkss-0007gG-5S for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:26 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=rHOYQfMws85/v/TKFWwrtCxzwpx900c6vY6eQMYDauo=; b=V2r48i8qv8Za2SEVsK9xKB7HlRhRhPA9uurMshxR7mmcjO/N/sPE4W+g+iToXd7dZYSxg3O0DQbpaZJhlQghxIPzFvtyeBmoNncHnGhKPVXLIf7GgZmPlknqR78tAuDK89j7s/jhbCALAMvas4bNK8RuX3jIPPK2J/YQ9pblCxY= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:01:54 +0300 Message-Id: <1499263324-15184-4-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6ff035e2-d055-4d06-c25a-08d4c3ae756c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:RWIhF+/bySloffNvr3VJac1sy2JLDuvouQkmb/DRfWHhnSZ9IZHHL3kG6s/L1/6WhPZ1bfllDOjQn1KN8XTB3tVwqmQ/c6LL6EulRwZcNn0IFrK5+fkGsGYHQC/mh3xwWZgqqUcxYBlJ+qmsdO9S6zp1nCxxd5DjLem89BIKVNci+Kpdg2gVjWv3gdHIjjNKevABgiyann8siE2i5lj5JutiqP7C/hSMWoNXpF0jBr/LJe1dGK/pYZ741aKtXKcoTUjt6vDKCyEaoQj83gbQ39gElBRVjtXUqf/peHIFFIouZGin3Q9Tzq/4nFSBa3ylLnbGaWHEReYHBsgY6KlATIEC1zsRDJDVcumWFbml+hXmiv9FBJL1YDcfQ7EaQEgY0dtQdRnFufEYrk9bQ6J4eAP87pSvdA8MeGwGVF4V+blTp+sDCReNU1Shm2QgUU5n/8O7uBVLuJFAPDU7Lb4+3Fh/1SItwAIMOgBrAyRZRGIPniV6a8ezZb6Ct38VPIHavICgkgM+oL2mVUaWnTzBahBhpDu6Q1KioKGz0iDKFFtSelPFnB495FlfiViyA0qL5lfu7tBHjFm/vNlTt3hrk9sm2y4WwRtGr0ZvgUve69pGKExUHBp5KgTspAxv52njANiih+kvI3C1lQP44UvrHbiecYl+4CEtn51nACvZZ6IbxPqPc/0jE8OhvRJpatiW6SMeidceyaq2L1t5dMW9Y+ncpVTNOkhEyitHrz3isnMnU30W9uOx7psOsJBVJ9BV X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:p/X7VdXRp3EpHVBdjJ4IRzIWDfrGNyORvlUdlrMA+2TO2z4/i6mv6nYD3hp9oQhhrJ3Wq/OF/k87iZF5LMxEYTh5fxruk+mdJQ0Ah9o1ghw/LsuZNJu6fV1Fs9x+mWKi9OGXBh5lDhHZCc07zeIj7Yve4lFmzJP5iYT0gcFIoQ6mkejNgsRnaRZqFFITuDk+fttTJIM0PgDPnWzDfJI5KWSD2IF5I3jw+fo0QA9BNsJzc7FBOwcryPx44pWYGu3zEY1m1AN25gZ6Zpws3ucHGeYLPDl6UKglELIOhe+4E+QT3lgLEe7FBYH/HF+nhwN7ULH1BhUIj9TFyzGHBBtLa/dNo3tQBdK07+Vm6UHmxqYQincJAJflWwkRPWMd8V9bjd9GkOS6craqlVQCIAhDdjiFZLoqJWlvcIi5rhhV4YNIuXd0gI2oUS/UDAfCZXiTIwoGNKKikSUczP7vRpz8XFPu4WXvpIokAzZAANVFsHuzyaHJXlr3O+l0jxinAoC8ov7ZQ7LsD3sr83o8SlXGjXqa7Cd+Z9M6/7Azz87jLA7CpCXD4i6K4g6nwQpjxhA710a5u6vsBMgXZP+pUS43Du/knlp8Vx3K1kHeM5/W2tVgqPMgpwLc6zO/uTRcEc5D9/557Qv26jrkAerBnbkt9zo+b+8xwYbwjJzWOyvk40IvtSmlH0UqEXyEWp25at6Fv18gST4pqxEGn64wOjZuYyfqTNOgbh6C+weYypw0nRg9hPTjXqaD2DwUKj/iXrnSrhLkUkHy6ppLLXYXT2ZAJFunWjiRQHwb44xb+Gi72MPDAYqgRAKfOWeW1Nhx5nuQw4yWkbXWYVrb6TPpVtpziKVGyWYszymQv33oY2n1Wjw+mUxzHc2TtRaCJpSmP4uwQYM7hKTIDdPlWJYct+FFdD47MztCVHLUhsP0Ukc5rHM= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:r4VvlVxRmGLZKrNDb32wngkm5ke2ntBFJS+3hnjgK7bU1j/+9CpXXVRFsavM6/xBl0nErRAoIJcYF0H1IymLQ9IJcZe0e2bcvccfmffW53TS4MMe9CaRfJ7+TooUUJeo9oCkQMSYWoRZN5tZCDYeDxFIVNZb5vQFRJ1EFRyQ6ZkDmh7TwMhEe8jDPQnOZm1NiM2GddGMSTQb6CgSAMjyZqsfis5Ybxl94bHH0xOVwSVOLkWZnkCbO/L/EUr8Pl9wc6oYcu2PtCwNF6jitpDF/zdXWLp1dbUUGG/1jiGdi63UT/gMwwSE/JQg2BcksqYeTcBr0VIY+vjWKJctcYXzK5jSKg79mW6/NCjRvKp5He4ZhuAida7mMSZh18wV7mS0EZ8NuKDWMHo2K9ksX+v8dUaJIUngJkOUSkkSRaW6cI1eWcFaPxdQkNOs1+4vMPGQDuKyp7khH3Jkmpgw72dni16yFghTY3nD618o6/MGxajUikPwwrB9BxVp7C21FUPsbGRq8+8Rtwn5sqekD2oRBpvikRHE2VryUr5K6RoRH4AfdgxBt9mvF0r8qRQhji1aAtJ0fGEw/IA8z6UPuabjAPVsf+XoIAV6oRjgzbAE1EMOooZyebDSRpzY/EvW8Web+JB8gwmDMiyjgex3nyeH8bUFMprcJ1NHpmXLl28kptA= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:POImQjdy8fli0Ljg/Qs88imV1CBLwcr2G7Kw0QZUYne0ljVOI/sj9H49nxUWtox19h14PKE16bUXF9LFiPSDWYrhsY2xNhzC0DkfnP5l6SrZZKKDcSy8pYxb8TFspxOORewxvNpwY93oBbt7b90GI5Fi55zDxUuiN4s0cmP0wENNspyfnF3WZA04wBgznuRqP38KjzRLcoj5Jhkh5JX01rhQj1Es0Y7OMsL3nfT0S+LbJEiohyNBQESz7hhxhX3zePy+eQltiDNVSzdx++40NHk8pXIY2U4l7/ZbpPlLmNU9oLIhxKPPgZEJi6kTvExN9XTgTZ4WgIdWRXnGrq+C24fZT0gfAGfNZ0Yp5i5rT70OM3Vsk4dqyFx5Lok/a+5Ubk150CQo1GQUhtqBmpfBADCg3wnvfMWsx0Umkopv/gU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(158342451672863)(133145235818549)(236129657087228)(148574349560750); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:SIiJ3Hn7KYaewAvMFAnHomuj+hOdFfy8GweMU78U?= =?us-ascii?Q?j3lmaPp9xYBz9zxue7nW9lHNfBs0bn0mQmRDEqP+yPLnCdYPcCKXiyHyFj0l?= =?us-ascii?Q?sgO4An4XmV2gwN/O5wiP6EGrHjwGq1aLLjBdxFggXm2+0eeQiL8IMSASvWu/?= =?us-ascii?Q?CLY3DAahN3T/BLM8ld4n4iE3HdZP6PugSbHStLS9DS0z6DmYUixzLl1W00vW?= =?us-ascii?Q?jxwnuuQ77riT9MjJxkAnm0I5inEH4uc7oU/z2AR8rqPZsLJqCkLYCCjhozlt?= =?us-ascii?Q?CloJPsYw9FExE84Cl2Z5w81ctQ8XVgzIsN2RuLsCOtTdyfvgj4J4xOPi690D?= =?us-ascii?Q?1uG5aJ5+73RvDrLiuZYg5j/li+LQ9p1PRKMvNdEKv91Ip02n2OT3KTRkiQxp?= =?us-ascii?Q?gq6aUtlwXrcovtgMFnFTJbijc1O3oaTWQELEiNVRKsFBzWLcWXiI/HP29RTG?= =?us-ascii?Q?86Hb6VJbLQKSinwEH8rodK1aGTfMVJ5otVmmO/CCIeWiyKi50k6RqXl0Ahkt?= =?us-ascii?Q?IsJdC0/vLQ6HDEpRQXKqxTVJsCZHJz0ws96Du9ROI4ieXm1ExshfnJbk1vdi?= =?us-ascii?Q?JnUPtCXQ3zPgDVDysTxiNqxOy8J06fXD2m4etO0PQf9yRRreP1/1qaYQx6UK?= =?us-ascii?Q?rYwgEloMdD6Ey+xWwFJft+WMb+KuuN7EkBunpHSzWiH4zoljv558zIMp2pTF?= =?us-ascii?Q?hKmqmr50h9ZNlNbFkPCvlHU8eb8u0jX9tHl6VWbUk62/PKrpXc99teXMkZLK?= =?us-ascii?Q?3ARyi19a49IMJj2XENuwINhkvkbckFGgkMFAXVGK1KLPQ5Ch1Lk2Op/cIAQ/?= =?us-ascii?Q?Kmvl6OaQj7sEofeqI1xbHiFnAYlQh+FGeQRSaVsLJ4dgn2yHzNeBswcx1/Sr?= =?us-ascii?Q?MDvc+brrN1gDbsmbaxmHuKrgR10nMgTdm4yf3rKLh0H8ADJNTX2NE6Oo/KIA?= =?us-ascii?Q?RahebSZIQke3jQp4ZvMAO17jpmcmOy8hpNmldMe/TuS28+/D008qs/OWFKSG?= =?us-ascii?Q?h4ImzJ4qYPPog06+Hy3pIg6zNsUEbRRj9TjEFt8d5B+5Czct6BLCv6lcGgH3?= =?us-ascii?Q?egpGMgPBsFhu9lTTBsbw+Z+4k4tuv1VGmPmh3zfeNqQq64IT0wIr4LQ9HmKM?= =?us-ascii?Q?ZhRhhFGmjm43Z0WNsT9eoEk1X027yu5efBI92/RSn2urLctSOl/7lJR6VVxm?= =?us-ascii?Q?5+OW1ez/vMCGx0Ffq7ZjejHi7tVtHUuG7fK5CSrxnGQjOyoDH+yFev1A7szT?= =?us-ascii?Q?Z3J2fhy8Q20O9AABc+ZvW3QqUAXlRqWVbwtEcVWA+A33Q3fiAsQ21rB01nn2?= =?us-ascii?Q?FQ=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(5003940100001)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(7736002)(6916009)(48376002)(47776003)(305945005)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:D3DyQ/fAx5BMdy4EOKm/2/KkeqrGC22oqd0jwYp?= =?us-ascii?Q?yAuV7Y9Wu6lc4kkvrChbBWuBc+0djKTfpzesY6ACBe2ihtBZDbCoFUY0VRL+?= =?us-ascii?Q?y1518DctXmiHiocaM8sraLtim2oDcUYAmwz57w+XC11GRD+VTbU8ieZ7KJKk?= =?us-ascii?Q?v7FoeY/RpBf2lLfM2jl07jxPKW8/mr7tnlzJZRoZ+x16fcXx9K+xeLSa36u+?= =?us-ascii?Q?bbg3jX6X2E1Efs+otAJd59Zp1C9S30tsiKsIKmf5+xyRclY3L1c0s0453rBj?= =?us-ascii?Q?8F7p4nrZwmyPYUpA5jbe1Y7aZAE66+LAr3NQvSLu/ebHzc2teBFCYXI4pXya?= =?us-ascii?Q?eA/SjE9ArXbeb2F3RByzmv+GOJzpnYzku52vQ9wHP0wNvlfW/kQwai1YoOa0?= =?us-ascii?Q?0LJoqfhL/RdyAC9EiSJG5CveIi8Ds2T0Fnggiui41sc44JKuLE0yg+6t1OX1?= =?us-ascii?Q?N0MIEhwBtqmb8X9exkp5WK1MPVlkiWDekc1YeHGWs8iZ92GTtnlCLoQZGmdU?= =?us-ascii?Q?0qcIwZHr49l0+zaPyoe/dKnkvPyvc+ip4+wqSDpytfLTzKLwLqZccOgt6bSO?= =?us-ascii?Q?kOrukvyfWsbRuxHmFjGqRmHDvQr5YHcvVnf3zEkOZhzfcX53d+Wc7VcFtvA+?= =?us-ascii?Q?OUjADVYOsRHM3GRJaTN7gpT4zymCzEHqpoaMOSatJcs4kNrIPh7i0wYK40x8?= =?us-ascii?Q?dAmlotktvU+lX2RzLl8uyXY8AAW2fhIkh1WIOZ3KmMzIjZA17SKyR7MrCLVP?= =?us-ascii?Q?qios3iRblwwKIlk2OzeRYbkwJmvHCMWVOH2uUOfhtYZBhm0C4tSbL6p9+3oE?= =?us-ascii?Q?4TSdWokli+BrOyyp4NYd9TZd1Xg0zd1ccHmw9MRbe+2OZZdxl6FQp+m9ehdn?= =?us-ascii?Q?AUz6fTPniVmPKbxPWYcFdh0aPFbeLbHwPCxb+1XlNmztNmdQXAEHVGRfg1h+?= =?us-ascii?Q?kqzckeEh3harDX0sY47eXkCI0Jq77G2o81qkkeiQTiCdJl7i8dP9r8nZ7HYU?= =?us-ascii?Q?5bkj7yssGIIL4ffr1XSl8tCRhTu1tvJ3fGrO2/bWEDKH1+Fh+YPumJr2RPfC?= =?us-ascii?Q?Quki9uiNzoFnSnS21O2qki1BAwECh?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:IJASlr0Lw5topj1wt63no8FkjTc4D98rh+RjEENF?= =?us-ascii?Q?8JG8uJwePQBY8etQrrws8H6cQaTm8faXUsz/7eQe5jMUchkKp1NBL5MF78VH?= =?us-ascii?Q?47TjWiWorZ6fkt1VN4y6yxaCGvQOGEAhtGh9zPmEzSnXM44yNVYX++CFSRqk?= =?us-ascii?Q?e9BsDSftoCjAAcvVzmtnWx+hbEUrUVOceHbNhMg4MWKRcnYVw9sEK55Q9el8?= =?us-ascii?Q?TEmvUP6h8vh6YOd1yp2rlGzNC3WfWkqwaPO/nJQFyojzmwejc0af96gDOMfF?= =?us-ascii?Q?tNsDUC+XkPsMoS7SWg1jivoxSlFqCl7yQv3Ocv4VrVTMenclKwdu6BnDo1Be?= =?us-ascii?Q?/Wnk/1QkIxkmNqxNYgR5HAggqw6bx58ZR1/PiTtKwsaa77y8/cFv14WvsxCH?= =?us-ascii?Q?47yOdg0WTRsruYulxvDARLGeeBFX69O4uvx9dCHFGvSLOwlVN3F43CJvFGQ3?= =?us-ascii?Q?27tzsXwEVcoFCwHB3xHm8QCuKHeeLLNORLkrfWknN+AEff4SsjtLTsKDKDQo?= =?us-ascii?Q?QC26D0UaDSec29ccT39ZSja8VfS201OpEZLERsawlako9fmzZj/C4JQ3eo81?= =?us-ascii?Q?EvWfqn/RYs4lRe4ny0auEIv3cXfF2sQJdGZyS/T+e+RjnlCRlAmcdWFnZvbC?= =?us-ascii?Q?8ta+xaSZzX5I2HBjj/OIT0yNtxIZIcQ3OpmCt/AmEHNEagGtLVtFNBsFtP3V?= =?us-ascii?Q?HztidHPczDvyTn2xFY8fnm/T/52/F3asMLpsO0sHJLHBwlnjg4AXu+LJ4Afd?= =?us-ascii?Q?mR1URSFLZd81kwcd2dI7AzZRbRW0DlUmgDCNgoqDU3K1xuSdGy+v2gZeRi8r?= =?us-ascii?Q?xQr2nBlZHPkyhY9MrWUrp+nvj0GmviCpmGX0ID/7fz+uBfe7a1ha582TAYuP?= =?us-ascii?Q?LZLRxa9TZNSMNZGlmx18VvDCSjDatIzkFf+uL8yqnYPEv86WnL9Qk4fwcXdM?= =?us-ascii?Q?gv7bCvD4WVTLffhsaW4VnZbFmAp7h3K6w3Y/IzrRHuXYaoK9njQx7xKoLo4J?= =?us-ascii?Q?YHE=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:vYzb/Tos6gEKpsQe33erz8prXMNxHVdEFg8+XK+Tn4+GWJe73kUzpdGsrSOO8qTNhiQNwZYYGXL5GeAeCXAuwkM1iaB1D4yBzwUSx0NgJACiaA9GGPRr9P2k7u5OQfXGvuv6TCxsziHhZwYcGfmvoZQGtVVC1U/5eKsqWyWQ8ausF5Lc1HrF2kKORNbk+7iGuZjYNleBNhL5+BvccjoKYzr8MEWF4JeZ9/dSPvfUbN6gH3cU775yx+mvfVb18BISZrH0P7II4/T/ZSf3PIlmmWyM5WHqxHUNlJk1GnRRMsOZKfReaSrrk/hxPOqRDUCus/uw0N1HfBIH15KzXeIaronTk87R/oNySHmtWlWvsPSKRI00gPaQKesUMQrfbFj+IYYc1rlkY6oD75+nv1jLYi1ouN5pLOtzO+/NI99kKiNR+xZLdw1nsRuMQM0KVIrjoT2k/4uwYjUQ1MB5EheY7CEgZhfii5NprzBc8vcQrhvSINXa8E7oj/AVt0CcRykz; 24:b02EitCgd1Z66eZDxMtajKmVkWpgTrfwqhLduXA1+87Klu19DrpvELnzgf0jZ2mWrS8bkiHvSVYQ6CHdHR5tAWCd641J4ajSDDK3+GT5kes= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:SeJZXhBWfkgkdWDY+9eqy/KcPJpBQAnuvz4d2XRiLbQudi2p1GTbsNpIMCVvXF4dTpNExVkKNsS90bVreq5jZhq+V/v7HyjcI+SletQwukg8DtwB+oNQbHScnNnME1xtrBEZiJh3WEljyCRETpEXXv6GMjvztc7l6pxs5hs3wLtJKGQxaW/mHk6hEsT/mqFmOMdi2ZinsdMUUM7M4DvR7H1mUin8LthzN+9kPUyEhjvq/vARD+3+b1lGM/m8UXkn7xmlNeKMvO+eHO10EPbyutLDlU9r+VVD04tKNLdrzjt0E/T2l4c844IAYIyXuvTdZo7H60WPo1CEd5aUl3eMSTg7SJh1gcAQPdZ1SCdzIsgrV5dMVt+WF0cffTA0cFVHyhfuLCmFT93stDP1XfU30k0H0GqPMOIv7YnioLmgYbIBJjnep7TwsBKtGB54fSajIPqUIxjqlw5U386+etx4OtRKCQWtuFTD6e13sV3Y2uiOtfA4g6MuTAC2xMe7/HpmTa0Vivaj7DuXDXNUkYTd9lx48Lad8JSwWs/2e4L8mI1GJQH58Fldkp213NyVOXZ/cLjpJqntHF1fgS5esAFMWyg1/FYe4dihhp3dqh9tYnkNfoP8f5qGXA2KzW0m69f7q+ef8ZuZiBnLJ0IVh+80zgjqfc+QgRM6nor2OC5Y05UAAbkIENCaueVrpsxqmiY+cWnEQPv1MUxq64Tz1riI7mmcPpQ/kEHFwHnVbEJXAr2Q9oqiiv74b1c813/QxrW5sXozO9LhnWiIfj8r2rLBCXEhZYlzaMoW2xswIEqApI0= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:9rNp27p0ZhgHiS1Q86HugtSBchaKH/LWBq5YG35PKA26OB56IN/pM1P8L7KnXycVhgLIBainXGe+VyHkX/c9c7gRLX8FV0qvpOUBvBtsroahlgFhw0ZbowggwaYdGKR+WuT0ibw3+H/NjVufhnJDPfvgGO3Wemks/KErm+1d83E= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:21.6151 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.113 Subject: [Qemu-devel] [PATCH v5 03/13] char: chardevice hotswap X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This patch adds a possibility to change a char device without a frontend removal. 1. Ideally, it would have to happen transparently to a frontend, i.e. frontend would continue its regular operation. However, backends are not stateless and are set up by the frontends via qemu_chr_fe_<> functions, and it's not (generally) possible to replay that setup entirely in a backend code, as different chardevs respond to the setup calls differently, so do frontends work differently basing on those setup responses. Moreover, some frontend can generally get and save the backend pointer (qemu_chr_fe_get_driver()), and it will become invalid after backend change. So, a frontend which would like to support chardev hotswap has to register a "backend change" handler, and redo its backend setup there. 2. Write path can be used by multiple threads and thus protected with chr_write_lock. So hotswap also has to be protected so write functions won't access a backend being replaced. Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy --- include/chardev/char-fe.h | 17 ++++++++++ include/chardev/char.h | 9 +++++ chardev/char-fe.c | 33 +++++++++++++----- chardev/char.c | 86 +++++++++++++++++++++++++++++++++++++++++++= ++++ qapi-schema.json | 40 ++++++++++++++++++++++ 5 files changed, 176 insertions(+), 9 deletions(-) diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h index 9f38060..0314870 100644 --- a/include/chardev/char-fe.h +++ b/include/chardev/char-fe.h @@ -10,6 +10,12 @@ typedef int BackendChangeHandler(void *opaque); * Chardev */ struct CharBackend { Chardev *chr; + /* chr_lock is used to ensure thread-safety of operations with + * the associated Chardev. + * There is no guarantee otherwise, generally, that *chr won't become + * invalid. + */ + QemuMutex chr_lock; IOEventHandler *chr_event; IOCanReadHandler *chr_can_read; IOReadHandler *chr_read; @@ -42,6 +48,17 @@ bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error = **errp); void qemu_chr_fe_deinit(CharBackend *b, bool del); =20 /** + * @qemu_chr_fe_connect: + * + * Connects the already initialized front end with a given Chardev. + * Call qemu_chr_fe_deinit() to remove the association and + * release the driver. + * + * Returns: false on error. + */ +bool qemu_chr_fe_connect(CharBackend *b, Chardev *s, Error **errp); + +/** * @qemu_chr_fe_get_driver: * * Returns the driver associated with a CharBackend or NULL if no diff --git a/include/chardev/char.h b/include/chardev/char.h index 8a9ade4..22fd734 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -93,6 +93,15 @@ void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon= *backend); Chardev *qemu_chr_new(const char *label, const char *filename); =20 /** + * @qemu_chr_change: + * + * Change an existing character backend + * + * @opts the new backend options + */ +void qemu_chr_change(QemuOpts *opts, Error **errp); + +/** * @qemu_chr_cleanup: * * Delete all chardevs (when leaving qemu) diff --git a/chardev/char-fe.c b/chardev/char-fe.c index 7054863..86a878b 100644 --- a/chardev/char-fe.c +++ b/chardev/char-fe.c @@ -33,24 +33,28 @@ =20 int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len) { - Chardev *s =3D be->chr; + int ret =3D 0; =20 - if (!s) { - return 0; + qemu_mutex_lock(&be->chr_lock); + if (be->chr) { + ret =3D qemu_chr_write(be->chr, buf, len, false); } + qemu_mutex_unlock(&be->chr_lock); =20 - return qemu_chr_write(s, buf, len, false); + return ret; } =20 int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len) { - Chardev *s =3D be->chr; + int ret =3D 0; =20 - if (!s) { - return 0; + qemu_mutex_lock(&be->chr_lock); + if (be->chr) { + ret =3D qemu_chr_write(be->chr, buf, len, true); } + qemu_mutex_unlock(&be->chr_lock); =20 - return qemu_chr_write(s, buf, len, true); + return ret; } =20 int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len) @@ -182,7 +186,7 @@ Chardev *qemu_chr_fe_get_driver(CharBackend *be) return be->chr; } =20 -bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp) +bool qemu_chr_fe_connect(CharBackend *b, Chardev *s, Error **errp) { int tag =3D 0; =20 @@ -211,6 +215,16 @@ unavailable: return false; } =20 +bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp) +{ + if (!qemu_chr_fe_connect(b, s, errp)) { + return false; + } + + qemu_mutex_init(&b->chr_lock); + return true; +} + void qemu_chr_fe_deinit(CharBackend *b, bool del) { assert(b); @@ -228,6 +242,7 @@ void qemu_chr_fe_deinit(CharBackend *b, bool del) object_unparent(OBJECT(b->chr)); } b->chr =3D NULL; + qemu_mutex_destroy(&b->chr_lock); } } =20 diff --git a/chardev/char.c b/chardev/char.c index 839eff6..a7b342f 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -951,6 +951,92 @@ ChardevReturn *qmp_chardev_add(const char *id, Chardev= Backend *backend, return ret; } =20 +ChardevReturn *qmp_chardev_change(const char *id, ChardevBackend *backend, + Error **errp) +{ + CharBackend *be; + const ChardevClass *cc; + Chardev *chr, *chr_new; + bool closed_sent =3D false; + ChardevReturn *ret; + + chr =3D qemu_chr_find(id); + if (!chr) { + error_setg(errp, "Chardev '%s' does not exist", id); + return NULL; + } + + if (CHARDEV_IS_MUX(chr)) { + error_setg(errp, "Mux device hotswap not supported yet"); + return NULL; + } + + if (qemu_chr_replay(chr)) { + error_setg(errp, + "Chardev '%s' cannot be changed in record/replay mode", id); + return NULL; + } + + be =3D chr->be; + if (!be) { + /* easy case */ + object_unparent(OBJECT(chr)); + return qmp_chardev_add(id, backend, errp); + } + + if (!be->chr_be_change) { + error_setg(errp, "Chardev user does not support chardev hotswap"); + return NULL; + } + + cc =3D char_get_class(ChardevBackendKind_lookup[backend->type], errp); + if (!cc) { + return NULL; + } + + chr_new =3D qemu_chardev_new(NULL, object_class_get_name(OBJECT_CLASS(= cc)), + backend, errp); + if (!chr_new) { + return NULL; + } + chr_new->label =3D g_strdup(id); + + if (chr->be_open && !chr_new->be_open) { + qemu_chr_be_event(chr, CHR_EVENT_CLOSED); + closed_sent =3D true; + } + + qemu_mutex_lock(&be->chr_lock); + chr->be =3D NULL; + qemu_chr_fe_connect(be, chr_new, &error_abort); + + if (be->chr_be_change(be->opaque) < 0) { + error_setg(errp, "Chardev '%s' change failed", chr_new->label); + chr_new->be =3D NULL; + qemu_chr_fe_connect(be, chr, &error_abort); + qemu_mutex_unlock(&be->chr_lock); + if (closed_sent) { + qemu_chr_be_event(chr, CHR_EVENT_OPENED); + } + object_unref(OBJECT(chr_new)); + return NULL; + } + qemu_mutex_unlock(&be->chr_lock); + + object_unparent(OBJECT(chr)); + object_property_add_child(get_chardevs_root(), chr_new->label, + OBJECT(chr_new), &error_abort); + object_unref(OBJECT(chr_new)); + + ret =3D g_new0(ChardevReturn, 1); + if (CHARDEV_IS_PTY(chr_new)) { + ret->pty =3D g_strdup(chr_new->filename + 4); + ret->has_pty =3D true; + } + + return ret; +} + void qmp_chardev_remove(const char *id, Error **errp) { Chardev *chr; diff --git a/qapi-schema.json b/qapi-schema.json index 37c4b95..0090fbf 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -5098,6 +5098,46 @@ 'returns': 'ChardevReturn' } =20 ## +# @chardev-change: +# +# Change a character device backend +# +# @id: the chardev's ID, must exist +# @backend: new backend type and parameters +# +# Returns: ChardevReturn. +# +# Since: 2.10 +# +# Example: +# +# -> { "execute" : "chardev-change", +# "arguments" : { "id" : "baz", +# "backend" : { "type" : "pty", "data" : {} } } } +# <- { "return": { "pty" : "/dev/pty/42" } } +# +# -> {"execute" : "chardev-change", +# "arguments" : { +# "id" : "charchannel2", +# "backend" : { +# "type" : "socket", +# "data" : { +# "addr" : { +# "type" : "unix" , +# "data" : { +# "path" : "/tmp/charchannel2.socket" +# } +# }, +# "server" : true, +# "wait" : false }}}} +# <- {"return": {}} +# +## +{ 'command': 'chardev-change', 'data': {'id' : 'str', + 'backend' : 'ChardevBackend' }, + 'returns': 'ChardevReturn' } + +## # @chardev-remove: # # Remove a character device backend --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149926389910183.61342899225622; Wed, 5 Jul 2017 07:11:39 -0700 (PDT) Received: from localhost ([::1]:46430 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSl1i-0004Uz-N7 for importer@patchew.org; Wed, 05 Jul 2017 10:11:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44732) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSksx-0004kR-Rg for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSkst-0007kF-32 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:31 -0400 Received: from mail-eopbgr40113.outbound.protection.outlook.com ([40.107.4.113]:64062 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSkss-0007gG-Qw for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:27 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Y/UEtErcjTPv5rIELZsmf4BcHOo1vimpeWU4mtY/gQM=; b=LIxWtC2lM9QdOQqfXq7K209nqXfwQdltnezqIM95V4cSdDYWKRRIS2MGQ2/kTe7lrQUXVo9+Kl/8TwTRRn5YmYJ1qNVAXRUgn3OgZmh+c7+gLd06VN/XrBBgcPIRjuKAFQ451w17sK3HZ9JGjdI/zEDlCHFogXjQRZaiVCzl/5o= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:01:55 +0300 Message-ID: <1499263324-15184-5-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c1adb7b4-f480-47f7-55d1-08d4c3ae7662 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:qPKXqhB8Km8dvldgz9COM44ZQaP8rwfchqRsw8spjzet+0b7TUuek7VRk0ZFGK2rNkDW35xWMKMy+8FVsfV33gi+0ICu58meto4rNLZW3gs8nAKiDPQuvHg086adA+8YtVhDRMa41pLtRPh83dtDWNFEPUZblEkSr9i5GPzHoYaZQQgGCKVCuO23HEfqBZ2PVGfV8wIsqhXfwY8nU1lGFGdDKsnn1Xwq2fPDvNVOTJ45vnjGkrPAC5TjrB2Q3tWOSIpDQVfPQNWtOAv2PfkDcVMC++XaxR6oRVP8HGp9VYuS4kpt85c4+jKdCZDvmRBOssUyHSUZhtPOmheZ2nAM7ky0WaNwMcwnbpVQXFRC31IOiAOtvqr24JtgCEoBXqzAsjloU1E73QdzunZPT/nVL5Zd/qWMZeDNlf/bWCUuvjY1vM/crLZrlm9hGCzvY12toj17LK9DI7H3DZlq1mVkDYLZewknMAL8OXBWSy6LOQOMHXuVcjLvbC1B5j2a+aLkaXvLQsrU6B7tc/iOtEBc+mxrYZ38g/kiAvNfr82Nl76B0/yTO41Kl2uLQyBIKc3HkMPyr50EqezsIz21SjGJjXQGaynOB0qfzGurvWy493LMrgA18Sr0hOXsRM3eB2HK5BQynmuV3KVkynXtPzd0petSelx6cGirQQGt2UkW0d5Q5PsHiauNjBX+09oAQ3GETpary5stIW5ys0H28GMCegf/zZ/anlyrmbfQVtVtnp4k/RRSQ3ZirNz0A89xkF3w X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:nbRjHqQHXocmJNDiZ33z+eUHtyVGLlltsfxUTOMoTyRA7hCwgd9hohinsZ6o5R6dLBTxW5pAmz+Ru/dEeaxgWqryrBzG1gHLgKInKqpGXkO6i1ah4mtDpKN5TUaiTGS+Hn+tN7sbxx+ZCvAC4wfQocw2rmmEwilfxqyp3X2xrve3wrzkqNtgGT9P3wgZMblTmWaw0ytZUeA+CnR7MvN7qZZFAFkxHDwCaC+hoIebHe6ymcAiLpW8echChFWJ/FMJKJlYCn012ObMxoSceXoZ+iJevnl3SSQbxHzgEImFvTVo4JZSZejgiIIw0jn4Gw4oqaaPKs0QUc58umh3yEj0VpTEsWzqcnX6T5YUrD6NQlmvSU1nW0Foyl3wi44hgLFeaIh7kogzLhnUTVVrby0DDUezq89bEh4eVlD+YaUvgKlG+bDgjOggh71Xo90eVSHI2i+x0H6qQe0Om8omfif/MRlkIVe3tXL/m4cUvBB8lqBvV1aMNfFZH/Y9ho6eSQ6IJ4syfYtZhC14fiGviOOGnSPk2qMBRH5dsH96GpADCbH3PG99Ix1vBNfzbpkMrzBssU/aNmNpMUDSzg47dm2msi/wq96tFys1vI9/sp1qmhLXjZnptVIwlctlaRG/FJ5GiqGR44Wi4e/C0zF5hTaGKBq/Y5N5t3ddD3Ic6HAQCoO8za5lgsNx6JYaAgLHhLx17Od5wDLKyt9CeP9QWrTDdpYDIpWMfm1TIS3a6INdyd95cTbTTGZ11e5lo6IS91j7TO3FJDnSCnhVUXN/2tB5UAkjeAwqawEI+u/9QZtdLShNVrND1wKMdTWReSpkFlr9uct4fKWmEQ1nphy9f9oEdlc7GULXmWZZkG0EnmsS23pWbEX0foFgI/vXeGod7FQnmBB2DifQSXqhDhKOsDVW2Ne4Q/0qglyTxsea6To0Vec= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:HsWGu/dJCsdOA1gaGOH1LXoVdHBp+dINDo23cpTQw2svQmnJBm2qh70CfwVTFeJTgp1KL+UxniO9qiSviCt52bdLJgh6hAnScnc370qZcr3On3CoRBBDanmBJgN/V8Y9T/EkvEggNGk7e/Rs/ry2Dse3YA4HmgZDA/E2cm9H067Qm/HrSL+0JPax1MSWDU6BHTOfyeaweTA+fGFcdekIcUBX0rjKzk1jqAwuIxr07keToxp3labwmskPEN0kfgD+tbVL+jUT0AQz9CH2Z1rlp9P4iR+x3QpwwKxq71L+QQWg11QcdmLbE1weoGKBLVf231T7NuU0hFszvs+hxxZzRWyqiLEJjUxwIY8bbX9ovEVFn/1NCaT3jmVzy14PG+wej7s75dkd1v6M+zsoSzMHSkiZBMBaPuApJHKEV+NNENWv/FYgOTumTQqb59MMZO12H75CRPKnoRzJ/sU2eH9xPi8R0a3G1TPMQTBdKuopaKV7uyT2Nug4M6k7yTDxhXWGuBu0Fe4RhutuxO0QtRIcV+1rD3NwAi+sK4uCbhGbkmncqCfzvVxV4sissaFZLOIKwLaOHD/Xup6qj1ZOVzD4Z8omuaVSxTRN9T81sNS2mffkuV5lNZN1Q8zqX07PxoTwpwo3C5sxmuJlKqZqGxVt9X7IQzeUHjCaahZOzGu1Kuc= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:WacZQsKzDJwS24O1C990GibwKlq/FI8TfipwEFM6tgDSUxLE04imfThfzvYfcW0jvNr78S20I7/gLeRUnXI5Zn4rWFQdTJUoFMLjEGUJmaW6+uti96HaamKNy+Z16ZQzHX9cDs3zDAv4a5mtbS4zUSFrs7qlwvipYNUxscuvLR8+9mxFCY5PZuaxA4l+mNu5b/3b36I08xQDJ08RkDETJ/4pXmQfrfSOaP+17AcTm/AYTEGlghPDvv66LHYTyTPz2H6ck7dqbUbnPhvA001iG+ca0MOUZgW6Xh2xoYKeXR5Ch05mtBICTP/ZQozIcWLcat2TSXi6rI6vyk55tOp2fEGbEcJTkFMcfigiynunbcy410h9uB0qydR1Hb0qU0a0pR1f1oxaxg/L3OBsogs6ezL/JJX62Bib/9aRMARad1A= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:1eFR3RCYY4DQ5pruQ1c9OOiaSREz3tDVkKdOlzD3?= =?us-ascii?Q?917lG8XFSafV0mFfrZkPnnRIEB4zK5rjVsPHJv+MZCx9cvmAyL+XtYdUQe24?= =?us-ascii?Q?+/jsdxJBf9B50kGZP5KyZXZS2TYTQVFbxnCYiJNNQOjsMjBTIV8WFa/QO459?= =?us-ascii?Q?4RWBr4aRUt/BU4QyvDzZV2z0pvb+nQ5LJ38HPR+6mVGCEO/Txz9Y3LvgRTkA?= =?us-ascii?Q?F/gkHFmRxMjhLCQY9yM0zcSs04hMSEqWEOMOdcF15w2kTRswa2qUyaewoe7R?= =?us-ascii?Q?FwR4eBA4/W+0xVGr+lk9RfeTBFnfdyYjFfdiN5MSzdCnipyt7FF510M4pkQj?= =?us-ascii?Q?eFbkE8bcRtZc4KhzCE7omypm3E2iIm3JD/Pq96YlLp3s03PrWMYxoVGTkAy0?= =?us-ascii?Q?UqLku9m3SWU/gcLPAKfZpRDtL8Vp506HRLIvUbjKYp7VCF1+ycGkNSxBZPWX?= =?us-ascii?Q?YfLHNaMsO90NpH2jUP3crS5LwElfKHazxWAe8vSC1ey7YdSsXoQGXcC+xrTg?= =?us-ascii?Q?hgpgIdr3mk6BwifuTPFa1WS26nAc/7XtMZEdSjEGOgUq7Yhl9sJlEYlBr+HT?= =?us-ascii?Q?V+CTRCFHgpOFDvvsX3JocfgT+YwUn89qZLXmKOFCxAlMMuAQnA7Fi1CEiSyU?= =?us-ascii?Q?qsp5vtV8i6QMCGPZjlRkIXJrBvL6+RI9mKGhXIUnuW34apnHZ3ZVbYvcmS36?= =?us-ascii?Q?IdGUS/RDvHqr7Wocc9nEVqtflD36udOFGrBnDlnoC0/J0XPRKkbUHsfEGpup?= =?us-ascii?Q?Y9Nbar96V3HMz02q1Te57H8yy84GTNmCOEjsIfUkJcOQepLmVIkx8ClfSKxy?= =?us-ascii?Q?SFJCa9lBKAcs9Uq1TsZzgYvaDAwIoPkL16hmOTZi225BjWguQvR6sy5qM11V?= =?us-ascii?Q?HvSgtltvAsEYYSWyFpi6Qt878asGvNxczQI5O7njUAJCU7NEITDdHt3XLd/F?= =?us-ascii?Q?+Udl0hjqcvGuN05iqkmwm/WkDM8KZFInD8REKvaqC9nUxVLCSc35eB4QQQJJ?= =?us-ascii?Q?In1huAEw/b2gy3KHGOGP24bfxkBlW7oH1gtV/2ZNFZTFnkxQH79INQFPKlBf?= =?us-ascii?Q?gMSARuTjA1y55K468O84a4o2yd+/0tdKT08Hi5qr0XPrjR5yD/vrzTOScwda?= =?us-ascii?Q?jP67q9MIELi239OEDtp14YZk6jRmDQ9WhsoLmy58TE0wNUs4VGnUZQPKIQLM?= =?us-ascii?Q?w4XpvWhLv682ue6Mx+FTK55dQ3fEyVauO+xZ6CQj9w46858t4mDNUBmMuw?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(2870700001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(23676002)(7736002)(6916009)(47776003)(305945005)(53416004)(309714004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:EEhMexKs/S6zRWqRh/VI6YU/JplRYgN1UPxPCqX?= =?us-ascii?Q?N/bDO4U6xayL78H7AQk/WGSem0IN5NW6NbGpkZ/30v3Z0uXiT2lfCAcOrmL8?= =?us-ascii?Q?N2BmMpZH/J+fOxvcDznZ0KK3sRR2ZXZFp8kNU21sSNlzlI75KIKSZ2VP/uOH?= =?us-ascii?Q?an+oML9Bofoq+/ntjEd/0zvOCwTA5MRfN9s0EJaltb5f2QNaDzmGJVletDy2?= =?us-ascii?Q?GROAEf1N0b6M/1JSmBQ02AjwsTs0DJmyDJMq3UM7GBLSbKUBjwg3ZdHVx9rp?= =?us-ascii?Q?ipMzTe1pPPX8ZucvJZhcnhkLo5+2eKJ8mJUBS1USfKU0DeS4ZNSTVubz2jJK?= =?us-ascii?Q?TFdHPtJS6+A+zZS3SUcwoA9UeUTt+Iqq3ckHBFfKwsVG/OMwpcfPuT8FBa0N?= =?us-ascii?Q?JqmsH8vF+2cVoX3Ot2jwMCcMggu6iozVe/Hrhp7HaE6FWqvFkQNsALWv2pP/?= =?us-ascii?Q?MRCP6xDh8DPNba8aLAq6w6M2NCyKwY3lwjG53/vKrcIdy0YfIk5dInSB0jWl?= =?us-ascii?Q?DxO5XrCgOWr3nM8LyR1tA4oxa17rriNlHGaIDHXDMOOe7a7Ua6QA7uAlbAgN?= =?us-ascii?Q?I/kjMXs/cW005mziOm83uUMxqHnm+19u4rNS+rFH24WxTLOTSYPFZ+ojHD+3?= =?us-ascii?Q?zF9xiUGOET7DuESDlHZM8Pc1TkfgFX3dUKtUzw9ln8X81vi8CzqwgjyN6WGB?= =?us-ascii?Q?WLyIyvkXgd5+yAx0kKDtbLd+MYT2xoxc2QtiXdSgDbdYA897sag7oe2Q1NzZ?= =?us-ascii?Q?5UhOG7BKzckPjzvXXJChi1jCU8oaxw2IMl4+jQ7oDSZaXjHBw3107j6QrrvA?= =?us-ascii?Q?dmumc3gyxyyLznP64P43m85WzSBvgCotdVCrPjjqg6Cs97gMGMnkgzFVJ77j?= =?us-ascii?Q?xekYxMC/kJ1qsmwxTy3k1o1pJq2tOLJ1sV1vTFvp4B9q0vDXKsUsRWlaVgob?= =?us-ascii?Q?CS27VnhhliyLUg950crdNH06b32IAT5vWeE+//i4L4R3cDzc6vOZ1lDCzox8?= =?us-ascii?Q?XQv5Vmx48spG/+OOfqFsN9BuDorKYCRtBn5A3oNE9ctJlRGHwnn0hRgXdDp+?= =?us-ascii?Q?2TDCs1U5wseM++xa4rjXdg2tB7gAbIKXdNiMquTC7Ga57ihD+tw=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:R3vnHG/6mCoO0I8aiq3nlr0CEMo0fjerxyOFIr+F?= =?us-ascii?Q?F68k7ET4+Wyxsww6SHPr3e0JMHSd3IT64q046sPB4HW2v95CnYs9zXk5aU+q?= =?us-ascii?Q?9PmJMzt5o8muGl0ODzESIe5sRHq/KPqim/nBGoJiONkQlnH/2gapgsNs2etR?= =?us-ascii?Q?0JEy6wzYwLQOHrWaHCfAAGhQD+A9qUC9x8OpXsibNm+EdKR4tDU7KzBTd5W5?= =?us-ascii?Q?qMXqziRd9n146yIVSyb9FJk1Pkr3gj7V6Xh0V8FPrMj0CJBKGw679BsJgzzT?= =?us-ascii?Q?prOX+4D5EtRoj9dTQy+wjX/W+revW0N5evSs+8eI8TGhXSNetgEcS5//ZF2R?= =?us-ascii?Q?XEXsdg5kg/CId3mevuXNxNMkXygpq9TNFX2Gj8WjteqW9LFHaTSg98Z0w2rS?= =?us-ascii?Q?30Xg90PjzUiEbjUXbdWk6gIRQj8dJdBG26KqZ9pBec1H7BNnMVqrZT4/Y45I?= =?us-ascii?Q?vwj9iCRu5oUcQpgGMkU3VMIB2l5ee4kDzwi5iSrtKicy+rA3wvEUiejzs3HA?= =?us-ascii?Q?R4FdlIMMi2Aq57fTzfarGRP/mWGxWdK7xd2XOvu/hwr8crC+sdwm0AZi99GQ?= =?us-ascii?Q?bfsj4FZy3MscuJMRWDq3epT1CEDkHq3AuulE4wc+xo/f11lHzgBocn5nDdv0?= =?us-ascii?Q?eL6sLDyLWdm7ElEA4Tv2+zCCbOjasuVBaZiUqbJYXgp5Wxf5cO6vNP6b0/Xc?= =?us-ascii?Q?iNAJojQ6wcTqqt0BM/gwoCZ5xb2gy5GNgclbW+u6EseWN7aEbhaOgO89Rqhl?= =?us-ascii?Q?anHifN5fMkFpAepOEPu8BIsoP8og99biMBbA/LR+iPNQ/h4HrLQtMRw57L0/?= =?us-ascii?Q?rkA/3LRhKA0SbWvQfEvVjvCJH9wma56Z6nseoe/KiU+ww8H0nPWjUSQ50l32?= =?us-ascii?Q?zGOLlvhITxfdMobP8+vTRXXu6IPvpIxnM5WYZQeEVjNrSMYzjMaEi2zM96PG?= =?us-ascii?Q?7XOjxg+OonUAzBYHHO51WH9Pl8x1ApxlPgrCO5SnXABdoNn/Djx1hXGMf0LC?= =?us-ascii?Q?Fcg=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:kusWb+ZrjUdEKBuZyWAc8/DT2RCUG3n+zPszNjWBCeXV86sGpMrIDjm8FFiIYSn38o+Jpz8NC65Uaa+yKoQWa/kVzJN0CIhbQW+kUaYAtCvn6Uke+srdXVWTp3/8kZIFD7oK4yi1fkm0jwVaqqb8B3UV/gp/sD+HkVoIfcWjYDJtc5TwIi2K9y9uRmyZTO4KvluZ9dAFUSqANg37JOnohQ2RAB6AXFEP0gn+JAQgpF7IOZSbPGy9fP4nl8rQWukNx/zarxFi/MuPZCDba5UkLp554TTLuzG/B14uoj16poDQ1osohJ+zboFKL9A2esN379EaFeYei7JPfI8GQnAdSyaq++QF7UG50IsyBrzKPL54R7g8LdLt5PTyB4vewQ1eo0/h42vkoSqxy4s3n0pucf+g6j7jAKHz/LiHNSfV9g5POf4cPemWPevj05vRMVm0Ms7Zcw/y9BK3bkl4uWGi9qUGOnPoO0OpF0oBzXQacklzpCMziapg6geCchJ35Nqs; 24:va9Eu8BpJnJCoridZDlSWS2djgLcJX1+HIG+RxeEkg9oFV7tWmT7eUmiDZEPg+a887BBTyaR4FI/VGJhPQwIzozWCmbYOxfaYmgcgkjCzqE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:94LC3knozy7Z4ZVKRHtZBg1UqRx2YqJaH1M12PlOso89iGf0yz3NDRvC/ZEROEX0aFhs4Luvi9zOgOrkhHkAqL2VvX6t4J9o8CWHmVcoXE8LbM5MzigoAQBeg1dj1RItBcF4mbU/0URH5Tvy+EEMOCPmpVwSCGRfUoH/2UBWHG3+ObcRI6HHcS9GAyM15AkEZL60Cg4X8OnCGlzyMsLvj0c187rIT29ch+8xnw6OnD9nIy3NIHkYmYiXfHbqCcoihsDIfLlleaD/y1VHbcjd0YrXGP5izQtsTzSHt7V1x/WnVWmqGdRJOtGJAhCtVu/OgbEvb0lK2zI5bfiRir1suKhm/K2+IMwqEXHv3oCJsqEIboTv2aQTRLw8Lg927W9gWIDXoRXxZXUI7J4vernfDKyWVZXa3LswE/kM8QwfBIF4vAv5O6um/OQEzNZvSyfiobY7HNrK1enSBGhLlPKOXOgUwMB/Y7K2V009e9VdePr6tmc+pjVF2KyGvVm/gdDvvoYC/UZgBJO1PvF+zXebZ1uCCHO54O+LN/QGWtgTZwMWxmTv2NA2tmUKcQlysqNyNcnZ2hEDJn+zCCCVS+bUq8VdeSTFMvRYvathoUPrRyA8SgjAdN86wqXF1R23dd2406/sIfA2lxAG8HllNZ+KmYYNx8wqL8BRYf9W8Jk4xzT+agZSGtQPCF3GI7rV/Dn7r12HjTee4U7BcH6FEdwA4bhaNIFLdqmoWuWvuMCYy4ONvIPLbD9EndYM0mt+CTFB2X6rVE2kuIejXDg5beVwwB9fiLKbp0InDGHj3coRZJs= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:i102gKAgFKTos12/FMhTORVS/f3N5+hzjBl6r6Mv89ORDwqJLjxVITvqRMaTU0pJhs86dACUqMrBJJPmptf46owbGzq9fJ4qKq4TSua53o9gtZiz96reqZCTJOgVzFLNHYAUnZtiSPajBfGcnZDY3MTzFSkwrN1tThs+xlblXaw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:23.2245 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.113 Subject: [Qemu-devel] [PATCH v5 04/13] char: forbid direct chardevice access for hotswap devices X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" qemu_chr_fe_get_driver() is unsafe, frontends with hotswap support should not access CharDriver ptr directly as CharDriver might change. Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau --- include/chardev/char-fe.h | 10 ++++++++++ chardev/char-fe.c | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h index 0314870..385aa99 100644 --- a/include/chardev/char-fe.h +++ b/include/chardev/char-fe.h @@ -63,10 +63,20 @@ bool qemu_chr_fe_connect(CharBackend *b, Chardev *s, Er= ror **errp); * * Returns the driver associated with a CharBackend or NULL if no * associated Chardev. + * Note: avoid this function as the driver should never be accessed direct= ly, + * especially by the frontends that support chardevice hotswap. + * Consider qemu_chr_fe_backend_connected() to check for driver exis= tence */ Chardev *qemu_chr_fe_get_driver(CharBackend *be); =20 /** + * @qemu_chr_fe_backend_connected: + * + * Returns true if there is a chardevice associated with @be. + */ +bool qemu_chr_fe_backend_connected(CharBackend *be); + +/** * @qemu_chr_fe_set_handlers: * @b: a CharBackend * @fd_can_read: callback to get the amount of data the frontend may diff --git a/chardev/char-fe.c b/chardev/char-fe.c index 86a878b..be96fb5 100644 --- a/chardev/char-fe.c +++ b/chardev/char-fe.c @@ -183,9 +183,16 @@ void qemu_chr_fe_printf(CharBackend *be, const char *f= mt, ...) =20 Chardev *qemu_chr_fe_get_driver(CharBackend *be) { + /* this is unsafe for the users that support chardev hotswap */ + assert(be->chr_be_change =3D=3D NULL); return be->chr; } =20 +bool qemu_chr_fe_backend_connected(CharBackend *be) +{ + return !!be->chr; +} + bool qemu_chr_fe_connect(CharBackend *b, Chardev *s, Error **errp) { int tag =3D 0; --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499263596186952.8746837604383; Wed, 5 Jul 2017 07:06:36 -0700 (PDT) Received: from localhost ([::1]:46402 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkwo-000854-P0 for importer@patchew.org; Wed, 05 Jul 2017 10:06:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44710) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSksw-0004j2-1R for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSkst-0007kY-Tt for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:30 -0400 Received: from mail-eopbgr40113.outbound.protection.outlook.com ([40.107.4.113]:64062 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSkst-0007gG-Fp for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:27 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=t1v7YqbhKx3tij10NwDVmuDor62Udd60QiuZnYsV6oo=; b=Ju+IXB9o+09z5HMvSr9St7KrOYszdKAW1W1T3Kc4oTOqUq4foCfZvAf3t5X1/V9rzz/8ZoCK5dZKvbm7DpDIZUoN9xjPeJMQJ0aIXhI7S9X0D9om7ncW1qxmzCn5vpRVCUIu3t9uk/aoX5Z3p6gk2G8NSapUrLRZ8iY6dr7aNvM= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:01:56 +0300 Message-ID: <1499263324-15184-6-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3eac2e75-e1a0-4a61-5fcf-08d4c3ae774e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:9xj+S5qykwQUMAnRFD7wUPspd6GB4vprCXCD2/xha6FvH4L3RIXeJSaY7Ebc/4/GgxzXq0ec8lKCkMmwbywL2PrvPsd8K1puuPGM+JC9b5njGg1DEnwLnH70o+taGS5m2sSOxhd6h1H8GgZRyMMhLbycF1rCog0wsMgC83lWzwBFVVQLp4S2l2FRRCMVJEToqfY+65JIHSCzHlW3H0m97bNptyYwz0EwW8g1jjy4mCpCXzSdENw1BlJ40e7rADvrzgVIaOXG1t4mV0K1RUVhrJwDEsqQ0K3ff9w+N0EuMFGKDouRUDU0Y29PjL1M4dF8Q0ZnX1u2K/wKqMIUJnnV5tMOvpe9BKDLj/6iAoEH65LsqO9sniD9LuKD0IwVkbln2tj0mcBh8Y9Txe6/c+DNcgFxfMLqRPLqXJC6OZK5F5S/JNgMrv+J7rHasq4dkxdMZOQeiAv2UMiVF4qQaGq9FQFhbeeBnrl2ZeHPUzzpjY3JZilgzlw312gmST6cGQj29MT6yQ5Z6GWf1XshEGDudYDJYJW8CtN1A6hq6euVwiWBJjhZS672PBuELjbUNl3dIOTek1kHVW038hyTtlbbmU8VlyhIQNxUkmWqiXX79/dhFpVxWRBIg7MfVBc4RONfDrCHtQ+zYmMsf3tijFKho/a+pm1o77ycd65dBYJKzbL9n2rZ4wbs82uk8YbYa/ZgH5bqyKzDdsGl55Rtdhnfe+Z21GlWRNX++32aLuEzw1B9bVeZZci+n81lYjVTiKdI X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:KfTT0G2zs8HRv8MtwW9qrvOa4nksaPxTMn74fOvfQEuoeEBDYLOlFd48XlRYvzGeIhDac3aQIoc9Xw445PXOyGr9c00CJCQ7GdRRsBN1hZMZbktkqN45HfMsnkIzc0He8e3/FT1Zt87G9qTrM9/XgToA3NMidnfuwrR3MSPqO8AWC1xcWZXeb0ccYq0N/UTqsNafLb53WoTGd1dHywL7BCnIBkpvETVbbUusy8Qo3dFZ8ZgJuY6kYufYzRbq8ofZ4uR1YtgyH6745F6CRg0oKgRZVTm9pi4ZTbHtMWzIDhsivcX4nHj3XWwh9bfu8hU6ZjHqgIkQOXkMCzpDlnJ2lhztaTzhCldHeKFGumqunD1mynAVqSvYoIRYnkXiJu6ar6ASZB9LNxsTh63+XDPOCsbmvkGKLfkURsri+REVLGMCO35LociLuiQGBwPQ1o6BcNsYjz9h0wuYUuM0tUcPNzCqw5Qwt9XL3Poif4sqQxMjtEKPztBFl5cn0HEooSIqz/WaInxD4L9rmxx8vu64ilHYA+veSKQAhgTASs/hm7Nd07sXA2JhV7RFayH3f8PJDEOg847LI/gW9C9gcHY/1lghsuyjQI/rRPqK67eu1igkoOJNYrh5sPPrus7HQ8vnJdeuprbZXusmvJYgTjmXd4bDRsWNNL8vkIznvhre802cqrKQn0S7Pv7i5SmTLFQaQ4pCAusqcfTp4MlPrcFJbCdWopLG/30x+M+Un1/v+mLzcmIAE7Hs55j+phTKf2vuIXKmGFfGmQp6ToFWiGxsG0cs/aJla9YezI5ZEdm5SwKCRapoBCaVVCoFPYeY0TG6FYatiIfou/EPj0daEQy8bB+A8YwSCHQwPwuVCtNMGVZ4qcyMnqTPmV8PF7UoAUGpW9v4qxS8wvzBOsHuLetdHkqegavZojq2vEshe5ruSE4= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:9dKGSP7wLqeAp+gKKDR4Mxh0BIkhSrQWVJJmsNySsSscrVZOWfkPwUxw3O6ozaZ6YDGggpXVUzEPRBJqI9mNZnSoe45rgOjhA6f97ODbBKe9XAsanEKkR2wTsnbmMboaCL7qpfIF7saM+Svw8p0y60GjBzsxGy84Lsm2GgH5HdFR6i9h+kb5hDk28CuKY0L2rUMNFqS0JISha0vm7xZod0K4nCdKOxLXScMS7wVlvtiVDCcj5nbk5yh//zlngvsUeZu9s4GatCdZmJ7uV1DGCR4PYSyL2tX5g/Y/L2eMtDNDNxIimx4ousV5dl5TIn7MXRsrOqbHw698sbB4/59eUgU+/auiCZ7oQWlIQdfeLa8UNEZivQpVIJpSpobSTdAxCHZ2/RMVf4VXOlNUkoqgjrLlubfnwD6UuGOPHsLXRBq6i28u/6kIoq6p1oQ3VmfhfSbcGydFlBJJaA8tlz4k/5Dsjf1cBLnWQNVKCuI0CF0FQ8LhFC79HGhvrrh3OKdCten/4a0qKUZFmr8HuA+tlLyTPYbtMsaZxapVdkiW/LVNo7U++Z16KqAVH6vaQe/XELJ1tXczk88bNX7bFWZjUSWXr4oIaHohrYEPxN/di3dWWY72eQ0KOW19+qvVv6qYY9ZjPOElQofi5Ebi+VROxWux+sT4XKOp1Yo101G5nLM= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:mrURS+mxlzgoh5A4R03OOP6vdQlNOGvh+Ys3dY4Z0NY/sbMZraHbaYUCmL+3u2w5ra/T3NIYJjP+fwYlTR09ncC1AkCRdJayxVRNCQSdYRrDOouvzq/o4KZLytMV8YBVSe4WQ35W/CviFLhnnTYNzxEaMvllOrmzEKQr0fvroDas2hZWJH07GSixJDHCiLQhJQ2sFEJZVl5JxKDaJOb2RkuspKPFoxhgn8UCPrSt/KG225ZLymebxtd7FxCkonqZaNnWaCdiGQphsnThhrrAi4o7vcPLQjDmxCjh0gANjQy0QmRrtfGTm5VS2Qp1Ad2lI06gZ5fbzfUhZONs4b5jYluR07H3qsQMM/kW/LgUIfGa+GNML0MYagkP9EKb3Ta43AB2aD+lpqkvS0YRZWVBrvoNttjj2yIOBs9lTMo8hjU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(158342451672863)(236129657087228)(50300203121483)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:rEZCxuG993KOzr442Igq/7nE+Z+yl4PEuKTp98Hj?= =?us-ascii?Q?xCyvjBqLGOUp6/U1T/XrrW5VZ4SfUA/pNe5IbXTI6S18H+hldrQ+hK7OF3dF?= =?us-ascii?Q?3rykLEt0aCOdE0og8eeOpQaPeBYT0jHmMuEaAVv3rOyW6Z8bEph8gWT//mI1?= =?us-ascii?Q?DpJ0r7RuXlitULFhAU+Sp1COwSIa9pIanvLPBeHr/nHQC5Bv7dcPe1W/c4ns?= =?us-ascii?Q?W7wLE3QYI9IwSuNZZb6wInR09bibtmKluIgmHtwBa3PSk31wzx4m48ouANsS?= =?us-ascii?Q?66aCF/o69vZFrmqf9cjeJ14W9v0nFojHWX7cmC4n3xTdRnB+Vqptk9gsONCD?= =?us-ascii?Q?BsLGBH6/gEpOZZR9t5BIk0buwT9C53vcIsGx2ZPOSKssfmwZGzXkxtM2WYOI?= =?us-ascii?Q?6bU4OISyzLSgT5dOcDJlrok+o/diMADVLf3ewny3+4RREDIElBg9yE3gA7BW?= =?us-ascii?Q?pzkrNtUmicNDYgfiTfOv0OyLCXTC75hwjZjL6nloQRFu2pgKpiHyhiqcwT68?= =?us-ascii?Q?UKYmLtuzFTwMWYKBwceW61DHQ/kktHhjii2EKzofdL/PXamtXtW9vpFphdPS?= =?us-ascii?Q?PDTs69kB9UmorjnxUdTY8MK8g+/GiAl0Nc315fwV7F3f99STs9+A2gOnLifm?= =?us-ascii?Q?x3PUesWomxyXJYGnGBQFSUi2ky1S0aFBExbQ6SezDv6Cml6y6AU11TIBUma8?= =?us-ascii?Q?jPUVoGQVqr6H2/yvVBJ2T78eoP0g7gPuEolAi3fDGuntZkIfX0bSPJzBto7y?= =?us-ascii?Q?niKUiXzqznxUWtUxPsEHBff0zL0ELbQfkzIQaiA396T11I0NRodWJhdZQkIR?= =?us-ascii?Q?c5TnH5wMMpeJRsc0fS0OZapppvizhy5jowHJzHaY/k4xXSoSRo1reH79y77U?= =?us-ascii?Q?bvV8n/kGW0TOkuu3itcEs72XjyD/Cf9bp+nnL/PpmX9i8WoFMZ5dsG4sR7Dp?= =?us-ascii?Q?ccubyN6+ewKLpZaDUIjnrhaAuA1kHSK/mp/+6Et16EvkOOoiMCaJcl2D0Rye?= =?us-ascii?Q?AkEdZYV760+bY1P4OBoxVObo+zF8cMn1KvebpSFtqPiPFfplpAIyD4XIIyGH?= =?us-ascii?Q?dSW7Du7S601nBlXG1+5Fm0kinQOj0t/HUWCTseeb46i3ECbqXiAU6cLIhUbM?= =?us-ascii?Q?YUxlYJ1eQdlf1ME4BOt+WpJkTAispalq8QsjJ2iWq/WJ83Z/Z61CD7F+EWiM?= =?us-ascii?Q?eMeeDOeVp6qkUVnUPLtVz0uJVZR+pPWWCbOgukJnntVdNZIOQC9sdN0sH7/d?= =?us-ascii?Q?AZyPKMmxdm/U4WziRzNhDYhbLjYWZh44hYDye9TjzOYF2LUPBg8e3bcrdMmR?= =?us-ascii?Q?4A=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(575784001)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(2870700001)(76176999)(5660300001)(5890100001)(6506006)(6486002)(66066001)(50466002)(36756003)(23676002)(7736002)(6916009)(47776003)(305945005)(53416004)(21314002)(309714004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:8pyKVpN2c6pq3lBbVhrvZcsUCDPSqojiMjhlg0B?= =?us-ascii?Q?QpokPRRDO0gpaXPChcj97HvsK+hErhGU2SnEJlq6dsvdFfVk1UngbocpMqDO?= =?us-ascii?Q?WJ7m0ig7TFJQRZP+I8FqzdHdg02K3fYE6TH4m7Eigz1SaxPd5eSg7lSNtOiE?= =?us-ascii?Q?U5MSHcrblmofh2YyejUG1Kj41WvhoGDo/G9BWA8UpQw/cdZqwGC1OW4OwGfL?= =?us-ascii?Q?jh4b1RIm3UxNhLYdnLxq5yGwseugRb4FzdNG/OliPX68EeDglSTV5N5cgFKx?= =?us-ascii?Q?cNU1bIe6p89OQ1prU+5jS6IILqWrK5b7vFQHalrP5NV6p05SQLylAAQ7nP1D?= =?us-ascii?Q?N5gDWs3f8v53+l2xj1FySCndAZZoakiI35KNsLQZs9J9kX2opNXb8V9235Vf?= =?us-ascii?Q?5lD6CNMCVm6urieUKthSB5RMDwHs+5OWV4wBQwZcllpsjeqoc27C68S6qnF9?= =?us-ascii?Q?xIt2kqsETJ9qZ/g0Uld/reRIqkAvwS7RwtXcpSZqT/bXIm7YMi81UNShZXlB?= =?us-ascii?Q?LPpGT58Ft6qqOZ4gPRk3JG1TFNpyT7K97ua5Y7Hnh9O9p8iRDoAD5vwRgDKC?= =?us-ascii?Q?2rqAa8sx7frGgaYZG/ypVu7dQAAoxAoV4VRbxnXVO4kjzEZfdFJohUvRsskH?= =?us-ascii?Q?PzVgyZ1G463OVGBhp48yZq3wma6rctr3Hwfx01dddnmY7rlzAOw1jBgFZzK6?= =?us-ascii?Q?muM74kkaF0BMI3g4acW6NkHU945ZFjbWCv4YS+O5cFZ9qdJXeFWewreJ2312?= =?us-ascii?Q?GLGFokdMifObsqI51V1rDIPwBfmhKzOa8CJ2MhoDM1JVtlHfRp/Jct3VLLGn?= =?us-ascii?Q?Ctu/phoVlvfMlyul0sD4cSqp+bpOyivEA2gXN1ulXeamKrRe+6kL6JCOI2yE?= =?us-ascii?Q?jEMMDOwe3+68D/ARan6S3ibTv0zBXlnlEkNEhVEmquDP7WOpoxhfGptKDkLa?= =?us-ascii?Q?U+wuzV4LDAxxwU7HWfx19fH2rWt4ZizhRC0TcY8Oqte3XvEovDqW9BWq1yMG?= =?us-ascii?Q?4BVo/UvYYrs6IsWBaWV00CCGg7QYT5Wm/NSg3x+GLusn2KzanvwN/R+UouPz?= =?us-ascii?Q?GXMpaImV9hVCsmem0Y2NCOyxMatASfcGlOpqVbdnB/V+4SRqUDWYLYXB3ETQ?= =?us-ascii?Q?5d3LH5wCowhikmnDSGdbh3JIppP6n/OcnRk9OMkbEHiV1b+nxQb20fA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:e+oCqopw7jDicnJiGNLdhuyjCgjnjkncDnMhKWL2?= =?us-ascii?Q?OlRs5mKMe/MscfJcEAnEEHw1NtlJ9KHFKbsSvrWbIC3+y31DHNkADDSHbBUo?= =?us-ascii?Q?D3FQZCa0SwWE8h4mukyXtLTRmGqja7ADSzfZTxQiByDcniFW/PeiLlyq52Vo?= =?us-ascii?Q?AjTU1r4E50hs9OW3JyRYGsEc2e3ZC6aZ3aPFXs+v889EOvz51XPCNDBuPVK2?= =?us-ascii?Q?JFhxj/PUhAdGqJjl9mDEwHbboj8J8C9WlW2Mrk7L85gd3Dg7R1BhFTa9nFrS?= =?us-ascii?Q?KkhT+Maen45UwhN29nT5F/HPyXH3P91zqOhbIEPExFn4umHdu4mWEYBiPAsi?= =?us-ascii?Q?PrVf2UZjI/R1BENVfKa+xg0DLTz7ojOIsJD14/6/EyRDDgmRbIrEwJ4FRQw4?= =?us-ascii?Q?3ZF4yWiLbYVzor7mimybu0J2VOoVRS4CZRU599nSjsSHMGJEzO36MIG7j465?= =?us-ascii?Q?dn0+vKSucIl/k8cz1+HhMYPbVUIgeqoncDhblj9Jyp0PTF2q9oaQmpwNf6Ko?= =?us-ascii?Q?gG/V0ARkBerLjp3/lVvXzVzMgs2rL1pCppHL3FxQPM3FSjypFayCzH5tMSos?= =?us-ascii?Q?mpMGQYMiKX5cQ5njDn3xhB86nJZMaP1JI4CBgjuY64AZFwfRaVvsoOw/3m39?= =?us-ascii?Q?kShRewkeIasbVfRyzx5bW4gDeP+hPBzOuMHjMHs6TWEUQiE8ye+6oT4RIz9e?= =?us-ascii?Q?VgkhIzTcW8O0RZggoZb7XeDoIRvI9ZsHA+WHPehFCRzF3N4Y3xXcwZWBs5Tl?= =?us-ascii?Q?MfA55fr9t6WTmS8Rinug17ECL05VnQgiQVROc6cycyHGsvXhiO4QHjOuFXuH?= =?us-ascii?Q?PYqfNw4vzUs8AWQ4/6O47lTHwLC8+r5NKOrm8tAdaMcNlfyqIiA4dkZk2hwU?= =?us-ascii?Q?DF2ehsq32PkfYmxJD01ZaZ+mxxyg9v+HvCzWr2b4qqm6iXJklm8SWeYQ5Lu9?= =?us-ascii?Q?B7m+CsYC1rpuOknOreU+4TWUcJAsxHqyCgBSJnaWvVExYPQa8KqV22F59bCf?= =?us-ascii?Q?F+Y=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:bz5Lv5+HAMqMcCMUD6gDuZOhpBDLyCFVZ5rD47g3Mo9cib3aaZ7JRUafEZ/bcIqIMfuwTa+Bma3/8qdeHBQWX4Vv8lRGdboDAvo4DPCboaTbp+TzD8QjiLykL6CYZx2t3jWzNYCuh1Ktcn6szViyy9L3nh3JYLkRTXSbYFBQqzQtO2bgzo3XF0QNs3Co4/6mRW6xnbUVjYRQkDr22RPwuoJzMsn4RPnShFTToYuJxw8GEYUbMsCOAOCNfvEkd6ShkHDLqucau6j8CyBjOJ+TKEI16YFohZwTqjDzMbZIYAEz/qIpo/wY+vGxJqBsw0G2dgLENj3nCTrE/Fh4b9aJl9svqehMfgCCpp61jNEnYwC+qjvnXGnRcr6cpUV8Jmlhqw92ao6l3AahqPKfEM8u0TIGgRYEEVvYwawzzIdDVZ9l5i1oFK7H9Y4O/gnp/BjAwtWW8GvZ5XUlEqjtxyDKo1rDw5IQDJOMW2BB5bv6MH5PqBJZ1tllFSGTsbnlnwJj; 24:YLBJqKcdBYmYsEejzzXDdP+PawIkzkxel/yzpmRpjc6sNzBOlYK+JtoNzWdnC4yO+rNyRgDxxZKRr+lfXP4AQv/rM5NTOBH8ZbnUi0cOeW4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:WgI91sn0tBhMHrG0UkDWnCGH8dB3m2EYKEZPiAinLnZGIPfK2CqH6WrUpJhHYxZgx8WuwOdWUmBN2Ai1hnhkjZhlfKV58AdoIuL8yvXWWE2sSm7z0CqPRFWPBO/GZms6KoevEVKlbVuYKx0EmBC6yGCpgpJkUwcRgM6ReyO6RL2qtWtYF01FKCkJEGMGmA7TFQH4Nwzo/QQvCvIdtIDUUOHKQPCym3tog+Csg8qTOOfg4CByaAVY0ReWGrJfP4r951iWfhPGh6EGf6NqqzGT6KymPjwH44wZHzUzV0pQUZVRrAV2BSTis0yWRblld3YuOjBGxJ/cwSXIDeY2BvIj1SS7LWzRfTYQvpPt+l9x/3CzUsKtEI1pQbm9zRc79MBfkRYKzh2hOi+dfMvBCuri8KtqwmtKWVrULzHGIXMcT7FFc4+VspnJU7M34JwyYRoFSWSt/LhvLTpCNfUs2TAmtuzOO2/YmEc2k9TbVk+hSXW5LmsfQwAcMBNUUEOiFv/nRuLokUaKf1T9ilZSwcIqcIJgJDNwd/G0Rjv+2FEiFIFfrtFQEjXRi+6jNArek8yzx5azST8Hcj+zUzczYgBQOzy2FNmq0k6YNW8Zvam+eNmgdNhpGKEPhsZCsKk7xO4tBq2yNJSzz5jyizrjxN2WLmHVovPgXV8h+5XKqM8XxAK8giPWK1VUm9DBVHd4kWv+ddGFgBeGmbc5Mo6lQN0astmBOnXrAlKUEMOfdj75Kb5IJtu+dB/GNYd5NV0fFPBM++l3dsHq1eYZF4mRuaZrxdpZ1eirX8rEKc2NTRW3wo4= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:N/boZOfjkM+9jDa5FYTB2RLc4itWZ9NsnnFjVezHQ99d9ex2FlmH5zA+6G82v4gFb5GryOLS/+vF89mELRdxk3hbqhcx/23UyNcmU1CgTMiPR8DYo+kdOKsWMydY8iZb+WYEKrKkJYbgR+L7nj8y7TNvFML8GaAmre1x8dS88W0= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:24.7558 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.113 Subject: [Qemu-devel] [PATCH v5 05/13] char: avoid chardevice direct access X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" frontends should avoid accessing CharDriver struct where possible Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau --- include/chardev/char-fe.h | 7 +++++++ chardev/char-fe.c | 5 +++++ hw/arm/strongarm.c | 2 +- hw/char/cadence_uart.c | 2 +- hw/char/debugcon.c | 2 +- hw/char/escc.c | 6 +++--- hw/char/exynos4210_uart.c | 2 +- hw/char/grlib_apbuart.c | 2 +- hw/char/ipoctal232.c | 2 +- hw/char/parallel.c | 2 +- hw/char/sclpconsole-lm.c | 2 +- hw/char/sclpconsole.c | 2 +- hw/char/sh_serial.c | 2 +- hw/char/spapr_vty.c | 2 +- hw/char/terminal3270.c | 2 +- hw/char/xen_console.c | 2 +- hw/ipmi/ipmi_bmc_extern.c | 2 +- hw/misc/ivshmem.c | 4 ++-- hw/usb/ccid-card-passthru.c | 4 ++-- hw/usb/dev-serial.c | 5 ++--- hw/usb/redirect.c | 5 ++--- net/filter-mirror.c | 2 +- 22 files changed, 38 insertions(+), 28 deletions(-) diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h index 385aa99..61c7f97 100644 --- a/include/chardev/char-fe.h +++ b/include/chardev/char-fe.h @@ -77,6 +77,13 @@ Chardev *qemu_chr_fe_get_driver(CharBackend *be); bool qemu_chr_fe_backend_connected(CharBackend *be); =20 /** + * @qemu_chr_fe_backend_open: + * + * Returns true if chardevice associated with @be is open. + */ +bool qemu_chr_fe_backend_open(CharBackend *be); + +/** * @qemu_chr_fe_set_handlers: * @b: a CharBackend * @fd_can_read: callback to get the amount of data the frontend may diff --git a/chardev/char-fe.c b/chardev/char-fe.c index be96fb5..3120441 100644 --- a/chardev/char-fe.c +++ b/chardev/char-fe.c @@ -193,6 +193,11 @@ bool qemu_chr_fe_backend_connected(CharBackend *be) return !!be->chr; } =20 +bool qemu_chr_fe_backend_open(CharBackend *be) +{ + return be->chr && be->chr->be_open; +} + bool qemu_chr_fe_connect(CharBackend *b, Chardev *s, Error **errp) { int tag =3D 0; diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index 1fa082c..6a45dcc 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -1106,7 +1106,7 @@ static void strongarm_uart_tx(void *opaque) =20 if (s->utcr3 & UTCR3_LBM) /* loopback */ { strongarm_uart_receive(s, &s->tx_fifo[s->tx_start], 1); - } else if (qemu_chr_fe_get_driver(&s->chr)) { + } else if (qemu_chr_fe_backend_connected(&s->chr)) { /* XXX this blocks entire thread. Rewrite to use * qemu_chr_fe_write and background I/O callbacks */ qemu_chr_fe_write_all(&s->chr, &s->tx_fifo[s->tx_start], 1); diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index 3a9335c..6143494 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -279,7 +279,7 @@ static gboolean cadence_uart_xmit(GIOChannel *chan, GIO= Condition cond, int ret; =20 /* instant drain the fifo when there's no back-end */ - if (!qemu_chr_fe_get_driver(&s->chr)) { + if (!qemu_chr_fe_backend_connected(&s->chr)) { s->tx_count =3D 0; return FALSE; } diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c index 9b56fb8..95ccec6 100644 --- a/hw/char/debugcon.c +++ b/hw/char/debugcon.c @@ -87,7 +87,7 @@ static const MemoryRegionOps debugcon_ops =3D { =20 static void debugcon_realize_core(DebugconState *s, Error **errp) { - if (!qemu_chr_fe_get_driver(&s->chr)) { + if (!qemu_chr_fe_backend_connected(&s->chr)) { error_setg(errp, "Can't create debugcon device, empty char device"= ); return; } diff --git a/hw/char/escc.c b/hw/char/escc.c index 3546df3..89ae9eb 100644 --- a/hw/char/escc.c +++ b/hw/char/escc.c @@ -417,7 +417,7 @@ static void escc_update_parameters(ChannelState *s) int speed, parity, data_bits, stop_bits; QEMUSerialSetParams ssp; =20 - if (!qemu_chr_fe_get_driver(&s->chr) || s->type !=3D ser) + if (!qemu_chr_fe_backend_connected(&s->chr) || s->type !=3D ser) return; =20 if (s->wregs[W_TXCTRL1] & TXCTRL1_PAREN) { @@ -557,7 +557,7 @@ static void escc_mem_write(void *opaque, hwaddr addr, trace_escc_mem_writeb_data(CHN_C(s), val); s->tx =3D val; if (s->wregs[W_TXCTRL2] & TXCTRL2_TXEN) { // tx enabled - if (qemu_chr_fe_get_driver(&s->chr)) { + if (qemu_chr_fe_backend_connected(&s->chr)) { /* XXX this blocks entire thread. Rewrite to use * qemu_chr_fe_write and background I/O callbacks */ qemu_chr_fe_write_all(&s->chr, &s->tx, 1); @@ -1013,7 +1013,7 @@ static void escc_realize(DeviceState *dev, Error **er= rp) ESCC_SIZE << s->it_shift); =20 for (i =3D 0; i < 2; i++) { - if (qemu_chr_fe_get_driver(&s->chn[i].chr)) { + if (qemu_chr_fe_backend_connected(&s->chn[i].chr)) { s->chn[i].clock =3D s->frequency / 2; qemu_chr_fe_set_handlers(&s->chn[i].chr, serial_can_receive, serial_receive1, serial_event, NULL, diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c index a84d2c3..3957e78 100644 --- a/hw/char/exynos4210_uart.c +++ b/hw/char/exynos4210_uart.c @@ -380,7 +380,7 @@ static void exynos4210_uart_write(void *opaque, hwaddr = offset, break; =20 case UTXH: - if (qemu_chr_fe_get_driver(&s->chr)) { + if (qemu_chr_fe_backend_connected(&s->chr)) { s->reg[I_(UTRSTAT)] &=3D ~(UTRSTAT_TRANSMITTER_EMPTY | UTRSTAT_Tx_BUFFER_EMPTY); ch =3D (uint8_t)val; diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c index 12d0c99..bac11be 100644 --- a/hw/char/grlib_apbuart.c +++ b/hw/char/grlib_apbuart.c @@ -201,7 +201,7 @@ static void grlib_apbuart_write(void *opaque, hwaddr ad= dr, case DATA_OFFSET: case DATA_OFFSET + 3: /* When only one byte write */ /* Transmit when character device available and transmitter enable= d */ - if (qemu_chr_fe_get_driver(&uart->chr) && + if (qemu_chr_fe_backend_connected(&uart->chr) && (uart->control & UART_TRANSMIT_ENABLE)) { c =3D value & 0xFF; /* XXX this blocks entire thread. Rewrite to use diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c index cc8c8dc..5e09caf 100644 --- a/hw/char/ipoctal232.c +++ b/hw/char/ipoctal232.c @@ -542,7 +542,7 @@ static void ipoctal_realize(DeviceState *dev, Error **e= rrp) ch->ipoctal =3D s; =20 /* Redirect IP-Octal channels to host character devices */ - if (qemu_chr_fe_get_driver(&ch->dev)) { + if (qemu_chr_fe_backend_connected(&ch->dev)) { qemu_chr_fe_set_handlers(&ch->dev, hostdev_can_receive, hostdev_receive, hostdev_event, NULL, ch, NULL, true); diff --git a/hw/char/parallel.c b/hw/char/parallel.c index 75a1a2f..055789f 100644 --- a/hw/char/parallel.c +++ b/hw/char/parallel.c @@ -513,7 +513,7 @@ static void parallel_isa_realizefn(DeviceState *dev, Er= ror **errp) int base; uint8_t dummy; =20 - if (!qemu_chr_fe_get_driver(&s->chr)) { + if (!qemu_chr_fe_backend_connected(&s->chr)) { error_setg(errp, "Can't create parallel device, empty char device"= ); return; } diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c index 741c641..c500bda 100644 --- a/hw/char/sclpconsole-lm.c +++ b/hw/char/sclpconsole-lm.c @@ -195,7 +195,7 @@ static int write_console_data(SCLPEvent *event, const u= int8_t *buf, int len) { SCLPConsoleLM *scon =3D SCLPLM_CONSOLE(event); =20 - if (!qemu_chr_fe_get_driver(&scon->chr)) { + if (!qemu_chr_fe_backend_connected(&scon->chr)) { /* If there's no backend, we can just say we consumed all data. */ return len; } diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c index a92baa8..d0265df 100644 --- a/hw/char/sclpconsole.c +++ b/hw/char/sclpconsole.c @@ -163,7 +163,7 @@ static ssize_t write_console_data(SCLPEvent *event, con= st uint8_t *buf, { SCLPConsole *scon =3D SCLP_CONSOLE(event); =20 - if (!qemu_chr_fe_get_driver(&scon->chr)) { + if (!qemu_chr_fe_backend_connected(&scon->chr)) { /* If there's no backend, we can just say we consumed all data. */ return len; } diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index ad043bd..835b537 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -110,7 +110,7 @@ static void sh_serial_write(void *opaque, hwaddr offs, } return; case 0x0c: /* FTDR / TDR */ - if (qemu_chr_fe_get_driver(&s->chr)) { + if (qemu_chr_fe_backend_connected(&s->chr)) { ch =3D val; /* XXX this blocks entire thread. Rewrite to use * qemu_chr_fe_write and background I/O callbacks */ diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c index ddd1b00..0fa416c 100644 --- a/hw/char/spapr_vty.c +++ b/hw/char/spapr_vty.c @@ -78,7 +78,7 @@ static void spapr_vty_realize(VIOsPAPRDevice *sdev, Error= **errp) { VIOsPAPRVTYDevice *dev =3D VIO_SPAPR_VTY_DEVICE(sdev); =20 - if (!qemu_chr_fe_get_driver(&dev->chardev)) { + if (!qemu_chr_fe_backend_connected(&dev->chardev)) { error_setg(errp, "chardev property not set"); return; } diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c index 5adf95b..28f5991 100644 --- a/hw/char/terminal3270.c +++ b/hw/char/terminal3270.c @@ -239,7 +239,7 @@ static int write_payload_3270(EmulatedCcw3270Device *de= v, uint8_t cmd, return 0; } } - if (!qemu_chr_fe_get_driver(&t->chr)) { + if (!qemu_chr_fe_backend_connected(&t->chr)) { /* We just say we consumed all data if there's no backend. */ return count; } diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c index c4e8c72..3643dfe 100644 --- a/hw/char/xen_console.c +++ b/hw/char/xen_console.c @@ -150,7 +150,7 @@ static void xencons_send(struct XenConsole *con) ssize_t len, size; =20 size =3D con->buffer.size - con->buffer.consumed; - if (qemu_chr_fe_get_driver(&con->chr)) { + if (qemu_chr_fe_backend_connected(&con->chr)) { len =3D qemu_chr_fe_write(&con->chr, con->buffer.data + con->buffer.consumed, size); diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c index 182de58..abab3bb 100644 --- a/hw/ipmi/ipmi_bmc_extern.c +++ b/hw/ipmi/ipmi_bmc_extern.c @@ -447,7 +447,7 @@ static void ipmi_bmc_extern_realize(DeviceState *dev, E= rror **errp) { IPMIBmcExtern *ibe =3D IPMI_BMC_EXTERN(dev); =20 - if (!qemu_chr_fe_get_driver(&ibe->chr)) { + if (!qemu_chr_fe_backend_connected(&ibe->chr)) { error_setg(errp, "IPMI external bmc requires chardev attribute"); return; } diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c index a857e50..7f678d0 100644 --- a/hw/misc/ivshmem.c +++ b/hw/misc/ivshmem.c @@ -1128,7 +1128,7 @@ static void ivshmem_doorbell_realize(PCIDevice *dev, = Error **errp) { IVShmemState *s =3D IVSHMEM_COMMON(dev); =20 - if (!qemu_chr_fe_get_driver(&s->server_chr)) { + if (!qemu_chr_fe_backend_connected(&s->server_chr)) { error_setg(errp, "You must specify a 'chardev'"); return; } @@ -1257,7 +1257,7 @@ static void ivshmem_realize(PCIDevice *dev, Error **e= rrp) " or ivshmem-doorbell instead"); } =20 - if (!!qemu_chr_fe_get_driver(&s->server_chr) + !!s->shmobj !=3D 1) { + if (qemu_chr_fe_backend_connected(&s->server_chr) + !!s->shmobj !=3D 1= ) { error_setg(errp, "You must specify either 'shm' or 'chardev'"); return; } diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c index e9f58c9..45d96b0 100644 --- a/hw/usb/ccid-card-passthru.c +++ b/hw/usb/ccid-card-passthru.c @@ -322,7 +322,7 @@ static void passthru_apdu_from_guest( { PassthruState *card =3D PASSTHRU_CCID_CARD(base); =20 - if (!qemu_chr_fe_get_driver(&card->cs)) { + if (!qemu_chr_fe_backend_connected(&card->cs)) { printf("ccid-passthru: no chardev, discarding apdu length %d\n", l= en); return; } @@ -343,7 +343,7 @@ static int passthru_initfn(CCIDCardState *base) =20 card->vscard_in_pos =3D 0; card->vscard_in_hdr =3D 0; - if (qemu_chr_fe_get_driver(&card->cs)) { + if (qemu_chr_fe_backend_connected(&card->cs)) { DPRINTF(card, D_INFO, "initing chardev\n"); qemu_chr_fe_set_handlers(&card->cs, ccid_card_vscard_can_read, diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c index dc145a6..94b5c34 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -484,13 +484,12 @@ static void usb_serial_realize(USBDevice *dev, Error = **errp) { USBSerialState *s =3D USB_SERIAL_DEV(dev); Error *local_err =3D NULL; - Chardev *chr =3D qemu_chr_fe_get_driver(&s->cs); =20 usb_desc_create_serial(dev); usb_desc_init(dev); dev->auto_attach =3D 0; =20 - if (!chr) { + if (!qemu_chr_fe_backend_connected(&s->cs)) { error_setg(errp, "Property chardev is required"); return; } @@ -505,7 +504,7 @@ static void usb_serial_realize(USBDevice *dev, Error **= errp) usb_serial_event, NULL, s, NULL, true); usb_serial_handle_reset(dev); =20 - if (chr->be_open && !dev->attached) { + if (qemu_chr_fe_backend_open(&s->cs) && !dev->attached) { usb_device_attach(dev, &error_abort); } } diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index 115efb9..c597145 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -273,10 +273,9 @@ static gboolean usbredir_write_unblocked(GIOChannel *c= han, GIOCondition cond, static int usbredir_write(void *priv, uint8_t *data, int count) { USBRedirDevice *dev =3D priv; - Chardev *chr =3D qemu_chr_fe_get_driver(&dev->cs); int r; =20 - if (!chr->be_open) { + if (!qemu_chr_fe_backend_open(&dev->cs)) { return 0; } =20 @@ -1366,7 +1365,7 @@ static void usbredir_realize(USBDevice *udev, Error *= *errp) USBRedirDevice *dev =3D USB_REDIRECT(udev); int i; =20 - if (!qemu_chr_fe_get_driver(&dev->cs)) { + if (!qemu_chr_fe_backend_connected(&dev->cs)) { error_setg(errp, QERR_MISSING_PARAMETER, "chardev"); return; } diff --git a/net/filter-mirror.c b/net/filter-mirror.c index 62a8265..6043549 100644 --- a/net/filter-mirror.c +++ b/net/filter-mirror.c @@ -163,7 +163,7 @@ static ssize_t filter_redirector_receive_iov(NetFilterS= tate *nf, MirrorState *s =3D FILTER_REDIRECTOR(nf); int ret; =20 - if (qemu_chr_fe_get_driver(&s->chr_out)) { + if (qemu_chr_fe_backend_connected(&s->chr_out)) { ret =3D filter_send(&s->chr_out, iov, iovcnt); if (ret) { error_report("filter redirector send failed(%s)", strerror(-re= t)); --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499264168832495.05765649972193; Wed, 5 Jul 2017 07:16:08 -0700 (PDT) Received: from localhost ([::1]:46458 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSl64-0000LN-C8 for importer@patchew.org; Wed, 05 Jul 2017 10:16:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44803) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkt2-0004lB-C8 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSksw-0007lz-Kr for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:36 -0400 Received: from mail-eopbgr40118.outbound.protection.outlook.com ([40.107.4.118]:22336 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSksw-0007l7-7r for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:30 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=pCb6JxLBVEsG1cCAFZOkJdN3Sq/ayGLS5010QBsWyno=; b=Hnp3U1wqhuOcQJKBy0d13SJrxDsmOdC4zb6VeD3t7M/juOX2nRQrmI0DmQlGGTDGZpS6kFvnIyMGwaaleTqs0+r8TUSLk1SWUt2G625yNpHqHEagxL3S9WM1n1OpnMkv07Q6Yb9AgCcJHmoQH93J0RwZ0pELkHzf0c3y8DNf3OU= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:01:57 +0300 Message-ID: <1499263324-15184-7-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eba3110f-a72c-43b6-402e-08d4c3ae7871 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:7UYAxbnBLf+5MQ5pDX1OEiRDtR8+GMJftMM45JGNbb5L9Mu/VyFsa4qyQ0SAvrsNSnfgpzK0MnNou6Dde663H3QmjsGxpySOJvEToxHV7rJGOk+0mmvie3D8NJzvxYLs3CPh1n/cKVdEzZOqZ9w0K9uXip7sSYCE4lsnJ7WQVGTjHmtNaj6rR2JhAcmuOiEAX3HR9+FXnL3/CtPiZv0OEV52qi8JUIxogipA8ofUBCyShrixulin6xfwJ7Mmk0MtrnnOZU33lZsYV8Rf3bx4gZjilG3KttZFWjgVFWCR+Zv9+wnj791jWKHsXydoHiZhRR0mPAmOrCFUGnwqZ3tUYIkVMTcqFgmwdbCIT2+efpDuG0L1jSZHJtDo3d1RVAOiJLeJTj63tLDER6jG8wzY25oU5o8nmXBF/UNRo1k1M1nPter7FGUSLba0CXBDvDQxOBpVe8kQT0xfqFfv2cvsAkX8U1QzQN+P/ivlqydzaxgY0GRuTW/bODPqZB7MNOgsLugSTpXMVyzCURFVgDTY0Ty2knLTeBo9Y09o0QbqJ1ZP3sjNlKhmmkKw3uwyKiWRqbWc3x65eXeBAt/9D6J+nbfoGs++1yWMYo0xWbcBd//kO30GG1LUxELsgRSxTAxk2zyGHYZzWkjTkWdiv7IWlxyBqvkHN0L/lHiJn3o8dUKF9uQRq9mVcZlpuBhjPyX5hBRWIUof0ezS2ofyow8rcTGYrEU81lht0qOuOENzbOR3mnGXa429WpiExOxmkHv1 X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:d/KVafc4VH3qi+fAMVCxhYeCV6tY7QFhHnvYGg0ou0XcuRy/L/gs20Zo0/j0Dk5SdNrBG3u8T3XF6V+Pk1fdr0gtq4GEY6LKMT4WXjt9LGVmKgBA1bjNSgV3fHcS23oOKSMGDq1+HTYJIG78zo0OEq1rp5moeBBVO4CMdYY+QfagdbrCodL6WHYxXUYfE2X0kk3mJ1DHTCavFD8lL0yhqLW75SP1jXoc07UFv8/MlcTaMu0Fs+/FvWnSmWN8FInkcL1VKLxTlM0guC2afY+2Z+KMpgUVl6QrGkDKxDwXqFvUU2afGmvvPFoSVgicz+creRw5NXnf6LjNiZRR/hRKVsBpau1f3v9ud94/dvXinP2d4tK8tsbMiwhNxxtAxBAU7G1gCW+ZECB5ZHdpVkTrHMnOtwnqt5xP6dJQsVsaqoUulDWrMCTLoeji95bqKoaE0GntGdfVXCI1pZ3/8R1eYnWA7uSXD0ufVD72f5uKBNgPP0oVcSp5LPKxBNnweGnAF+5CUekTacZRY6tImaXElEwSB54o2X6HyWPzlTBTRjCRcGKA4GPbc3Op/hYziuNkNh5Jnh87FurKOWacslTUEZQc85WRgmSVwHKDEad9aekJ71TlL4/6o3GlmGwmaW/vApNW4wrgPWrJv/1xu71+pCKaUXybCfYJ7TgNg/6djcUBHry+iAjeXLUzONuzwJxyJiDbSS/KFReMABLWEMmNAlQ8WbfBXlhjlkwkschSTSxh0VApAkFqqKDOl3RUwRxPaL11DQizlKru0Bii1N+eO506ZIMvVwsUdk0hJzlE5/Tk7wCdh6GwqUI5KsY8TmjC0Dj4IcUAn8cd7zO0zuQz8d0ZEwTeh6WdW+v9Drfw9CQSVzrgCAw74wt8loT9hMD9o9QuquOXlh1ikgInuvTRrB342p8b50RMMkJ2xyK9tEA= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:UCYXAMQ6WrXoUMIjQ/uLOlR5UE0FGjxnhXQdKOwqfChM2B0PFQWT9QdIYjnscoUmJPth5aAnLHDbXejVei7kFlekyk01kIDXyghX9Pwq1ljKZp0JFo5VxtLZMYGZ17EZyHF3kCjeL/Ze4kNDDLFEaMp5fl+HVgFNPZsPHT05nZv68wJb4OXFxCtIlzbO4JF9z7/7yQEsNO9ajM3lfYr2PGaVfc85Kw/UOxJVZuhA7p1MAoC9FaYNnkq6JvNWwePrjl4vbeUgPE+m16GWkETfB/Lbag0ggGvxmCoqiEdjT5ARnztjh/9c+ZVHDxaWrIDFVvZxyvlrNwVOXhxA5OIwMPrev5jsGqg0k8d/Kvle6RwytTV4+aDchnqQhvv/S7rh5wCl2+nJC6aJy0oI1iXl9CxB9ycvwNqJyLFqze6MfSswndYliWnk3X6E5IIkd6f2AT2gSbLKkaCkjwb+Of8VKU7Ryfw2v5cKamLCpqeLUHtcbrD34h2mjGGCDP+9Zhau9HoiIKV7Oo25G50R2a7jkYlbe7W+47BcKuR1zOQNmXeOcU+TlZzxE5tiN2t4SxN5s7lFcyshs6cbOG1ytC2UWfJHsFYz0HXzYb8US/5ceu9fRCHly0YsYcpnygo+wIiNRHUEdVznxhPhykthNGf98FnHCXXZ5s4/gJ1XH99YPxg= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:j6CI47M3IFjMFXHiA+W4eg1u9Ra24C637KNwPxO86Ffzc1o+2C8TjhN3ls7TIxNQag4gOHc7omJudNRq75lPpDwYvziP86teVu2DM+6RoPJ8C5QZGVVH9rmn55GsLbmVzWhIerI6JQJQFSOTNtjEO1tF8/4NMxQdQRawlON3ciUtVgu72n7kn7ei6krb3R1w9QFp9JjKppc9hRWnOxoKqwbIzxLpt0gAWHyWDe6er9z3KEZpb6zzF8Sv/yV7Hd/9pNkIUebv3b3ToF57PJKXy7rrE28jonZ9fRVDRizmc4gpRFg68ZFwwNqlrsuNmlkRD1ct6Wmmd1jFrflcli0Nr+MZi7SqaS7LS2F6k4FLFIa0t3D+z3y708/v00AdizmRsodiAvfsr2YRy1T8gd9hgQmdxgmCBrXcIxrFXTA5/Qk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:81aUpxC/16j3eVHPZbQRfAl+cGbIRy7ZT2gwDABu?= =?us-ascii?Q?c4sVyDKfXcrgfKDANnSxZqGaPSoAYe5TKLkHMLoyFVQ27UrWqyAUnvt55lYg?= =?us-ascii?Q?AGzoxQpHfl6/6TAGcYd4W5O/+nQ/v3yfXSlNmDEEVLUrbYZlv9WYrm+6rtql?= =?us-ascii?Q?QBE7MSTmv9Nbhkm6bCQJ/FY4OxXDL8mHzmKS7vCExmTHm1r8E5AFWd9OowFa?= =?us-ascii?Q?LFBSCSEBmYHPlVHQ62X1xNuK36pFQxgs7oieVZC03mlA3bPnsLl6U8ADZy25?= =?us-ascii?Q?SaWMgA62sIucvKYSsv/oOJEIGgPWnnNeEUpcGAlECy9JSeRg+6kEp7COUL5l?= =?us-ascii?Q?GeMEvJGghiPlZP0DwXRnY8/1b5nwg/B1sKB/H6KMUzv6X1uyCHeGLf8ey+vs?= =?us-ascii?Q?yr18UQv+hzX4eiIMO8n+5K8B9O5pEYZz+hBClcvnK0OS5klChaMDd3XgMovW?= =?us-ascii?Q?pI21c4ljSH35guy4zfEomjFrFU7HVOVpUNfROadGeDc8zIlSZkLTNKhH/V5m?= =?us-ascii?Q?kfEfdCvrLodCeZG1fXkPG4bu4C5ivp5/gajEhfHcFb3xfbqow4k4wlzYRWEE?= =?us-ascii?Q?fF+pJrGTXRkuEapgOsuV7K4S8Mrp/totc1aRRje++yCEJZHCxDqzw+7phDWe?= =?us-ascii?Q?2tJiRT4eslEpjI6FgNDG2K1akRGhqceyt2VhdifHwZcRMWwjXWOlZ95Gu3q8?= =?us-ascii?Q?TjzgnNwkbUxwJsr5qF1MHi71B5T3y/vqiy3YLljS2GFHTxmQkWHJ36pIoiti?= =?us-ascii?Q?hg6ZU/ssLTwUg/ai3noFkqZt9XDrEHN20PPhl09AKgZjrvd9c2s1BVbqPygQ?= =?us-ascii?Q?yMaBD5BASwWSsFNd/lCNQV2PX47kakJrbYZQqI/DFEJ396sVL5SYcEnEKx19?= =?us-ascii?Q?DKYbdCgb4CBOLlMGDJu3JAHx8XiMxYoLmNdSgLPdl33OrHZ2qybv5Dz6FiEu?= =?us-ascii?Q?YILQjYuQMk1xJ5r+Q2/5n84VVirjRiJwqtVOiGpXC7lkmvmfAyebUbgcE7hd?= =?us-ascii?Q?eNZYm99amDJtXYj3AJBwd1UPl8OdK51M//WJHxXnSx/0XxAUGoPFuudQclif?= =?us-ascii?Q?aQVRwHydM9I/BC+1EuzVHfv8cLyIuhsssAt1j7eLqeIIjsAm/K6ORGINJN3q?= =?us-ascii?Q?svO6VmsfjKc04eSCIHrkVHC0H3t2iIYp6e+UxN9Dy1ZiC7SnaMsZIBpFxVjS?= =?us-ascii?Q?d/Yt1yQSDZVc7pw=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(2870700001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(23676002)(7736002)(6916009)(47776003)(305945005)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:6qAWNgZp0kFjZcvbHiuXLFGvp5TaPF9MCnJFwZX?= =?us-ascii?Q?EUh+b7+clsof2vd21CsRqjnOnyX9CNU+DG87kGodauacZf2Ha2DD4VC9PBu+?= =?us-ascii?Q?piFYgh0ST0llhbx1gIaRM9umQ+fOrIev/k1Hyo83iDmqBW4eaPvRkYC3Dq32?= =?us-ascii?Q?Prmvo2utN9udsWyu45E/foMaNF/z6gGsIDXi/vMNnbZI+lXxC5TuBaq9Vd9+?= =?us-ascii?Q?r4Z9lParDCZW5y8tuCzoIU4QI4ClnAiMIbOBg8EDoyeSJ77TsR/TwMXEp15J?= =?us-ascii?Q?NBKtTJ+GuY7r/3qxvp0jqcY/k8MKIKMaqpDwUdT2GEzN+MBZm9/TfcLo+VNt?= =?us-ascii?Q?iRXTFnUX2MGxb7XdYpFQOI/utjuFMjUWpNTZbX61UsWsQPugR/X0Zq96lUX5?= =?us-ascii?Q?hYpDQ5wfnY8gD0JMoWrxEsLjisJo6OfYLNDPjZD6PBmTKKmicchH5PXahve9?= =?us-ascii?Q?XUuo+tJULO4GFocrYPAVFer3fpaRWKC9mV04CEEY+l755JsJ+u/7f1bhaqTQ?= =?us-ascii?Q?xaxmDO7HNvFIzcFEG/0Q7AgOddfLbxNNOPVzd6pgnwlFaCJWWxui3VasPiUD?= =?us-ascii?Q?996RTlEVwitwPvYL+WPwQbIVlqJvsmO5dLl/qbloD0XvcLrJLbXJMbzQ0+ec?= =?us-ascii?Q?GQUNWW4lir9zOpSnXfQIzM4tmZWlQFS3ZmCToCkhoXDvpFOz+BT6C6wkXALT?= =?us-ascii?Q?pj2FPo4y4GEQ4wAUSwgmcFRkcmR4WoGvmlA6hI4dT0t1ViAB/8SC2wUfdChU?= =?us-ascii?Q?nt8VunoW91mte01r11NIV3ORocCRjywWOtUhkInkkg8g85hAgnMnoSX8TLiE?= =?us-ascii?Q?fPem1/6AlDpe61XoVQ5IsFfElBVxi71CM6n3Kv2CTrDTcjbvZq3l0HaT006U?= =?us-ascii?Q?z2gZTmCiJzNvzlxuoxRvxh9vN0HbaCF1oS7JJkz3Zue+/KQGx5ICWwIxHk5q?= =?us-ascii?Q?+u3gY7w7KTc/e1gSzSBQHNNNclv/56F6Dvpql+7TRqrN4jWM+9iISSY27T4C?= =?us-ascii?Q?0z0v1xENg2fGrqZaIZIhuLI3fIsWPcgrV9cXB8nD67cP2F0zWZ8NrnUrQ9eb?= =?us-ascii?Q?8qX4/WqiLgAQLbudspMuBlNPB2ZK1?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:iGKpEjnmrRmW5qrqBAd1TdXKyl9ZTXoJ2dNlKf/9?= =?us-ascii?Q?zrbdYhSS/OksXd/GFIxFR5+x+YMSZ5rPIb1duPfb4hZpcG3CflnKfsv2XEg+?= =?us-ascii?Q?OgbUVGoQGO9ytEHRz2+9kG652INMziz9/GhJBe4VBrLHzpNnjoeWh98oK9Ub?= =?us-ascii?Q?jS+xe/kxq34+7shhtZ4hs+U0dVvwPtK0Hk/Vm4NFarJXiCZhW2ceSuwjKnf8?= =?us-ascii?Q?2kod7y7LcZWxsI/gsceTzYHwDgiZrQ6DZd1uAMTjMR5gPhG42suO8Xnp1/Dt?= =?us-ascii?Q?yKDG68mVWwDcqu7hTV7mI+6B59r6f/rThEoIQ5EO0gsFWDskLxREoOpAsIeD?= =?us-ascii?Q?9j4h3I0bUAnnobSu5UBrrEs8PIofgvpj4qDVLX/Wd3qmn13GoUPiEqJogND0?= =?us-ascii?Q?uzt/uT4+8cirEcwLJZhByfTw1kTXedk4EEmmc9/wZMhKFnfvWc6mfm0Sqx1w?= =?us-ascii?Q?za3k00gTa/Kzyz2YH/jxnb2yjQ98tL+1azLgVlk9sMJmMThqSptmVBqCSTCJ?= =?us-ascii?Q?yjFivVnkUO9j+501hKUlJ5/+8An25LVJSQDqVufs6PgekcMAYGdufVGwltXs?= =?us-ascii?Q?bvrE8SuZtXmOPnJL5juw9L1/FwY8zoTQbBB1uVh4ftw1y3dar4/tjng1C2RL?= =?us-ascii?Q?jXX9eJq69j8eo6dqk7dMC8ZQ+MF+G+Knkm2hupre3LgL4K2Dew7Pb3wy15i3?= =?us-ascii?Q?ZsNFd9jzMejDeU9DIxhjJlR3QO2DCuVAa1gWO0qqZ4fRbb1Q3s8ozVG2FffN?= =?us-ascii?Q?3mOnynkX02BypU1HWDCxuME8m1MlR7oZ1tpcppzShK+ofRG8QbcenWkIa+ME?= =?us-ascii?Q?suo5F/OsSH/gDC6LonkWvX1XUv9OgH8xcEVdWjxR2XjWoij8ZNxr2m6BIx2J?= =?us-ascii?Q?WWuv8p7VQ7o5EfTeOum7H9rZcb3FkgDZPPQchjGodQ0tL8Alck09GWE4vp31?= =?us-ascii?Q?RH79GW7s0PKnuq+yDe2c0ju44lvadSXAn1FDdKmMJkeArCV+12tdF1HOV/VV?= =?us-ascii?Q?K4k=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:3bQ295XKPoAViiIQTDfKVzWg+BEG983vfcdlwR1rBJb5DX5KPIPKH7OMKjyD60wCUHmXJ9f0bQbQeXQFKZRXFrQ0pgdxA7Esbf/j7SQbaNHODmx3xOMqdt1meOYzj4+Z0WxVpsTg1uVM3IoT4IajyZNk/kY8fOBemDqyiFsJIlnNOsaaahS+yLKYE6fch0SvuhJJfilVtvmqhP1DLjzD7GIT9V6DmDibow/FRY0gaYBm70ibFRiRpnhaklMnIMUGj7z81iJryuRvIBeREK+raQXrvmSdEe8AJLecaxE0Kq2TVBlHL80HoL+sobGmExs5sNFzrIj39u22UqRPW8CPF6MVB3nyru2jkvTIx7pQaJCdjZnyVSGQTxWKUIGrJUoFMfd6y9NyVte+tYTNy57Az0dJ8rdBVq4YZtPzW6Gjhw4YIdkPFAqzISwuPF4oYL4ZmhsVMPJs3FX5Exjis6HrEg9XW0dJcgS2IxaOh67BTQiwXcyZFWH9obz9wWtCcFFX; 24:PBFT7APuxHt+G3QAGc+DtURufMtfY1BS11H6mKTv9hS4GC5wyl2favywNbNX2+MCsET45LXuA5VCc43ig/W0eCzAXloqwaKFxk5BfBP35j0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:w8f+s0GIjLavasURldDgMk/PI3rSXpT6c2gDGcKGccZ6Cy90uAiVERbMK7w0P1JYUX1anXyZA4qEy4XOWTBHJiZwDjIx2PTSvl+yop3IEZCf8/j95xhXHUK6lSHFbfWYemAFVbQSg0fA11vLnrc+7VxArZKxNkEDGs4Asph8PCsDtxCq0ElnXwQrwJV41gstaezLpK8fBr0HuH+gI5r8Sb52PfwwgV0SVfYFvRpkBQCJrany5lwsVCUTfmf24Wv4bVTmsdh+6F6eGNbyF+8d6XO6wZDPPyATPbVCSzoG+1FVVVU5ENNK577g/vfOLWWDWi3SP+Vw2iaT43z6CFnyqzyX/VEozgoXPFmoBauY0emYe7g7mMjUpXtW7bhwdZRUFK//C8HsTradih/gVQ/KI1DBdeMzID+WEGDDxkwAfzzOROCB4J6qXfPKleED6Uek0eJotRcjmxxt/lo8+fVos3Hjg7+oX7ZSjpXt7twBtbaisZbGMe9hhQUVQFN1XwpO0KEmAMWrwCS/bOhCqUDwebMHZlFaUh/iGRFa/Et5YCWfXgGQlffuqqpbbWupZqA8SUyOSU+L0+AnQUlSuNlxhUnj69y0Ao/9t2VYpzohdjgjovW3yQwx+ji4ZV166d8j4+iImn1qMEcWsXch4Aifh4p6SplSRJCcZM5qHJytZV9uoWXYKDHBiedcMUn0o++iNOcLvhMs/BMDExssbiKSyatu1zTwcuBWedTtxw9+YRXsJKyalYRumS8RK1JoTwgVHSuXhRjSP5DZtTHYD1Hse6xtjLibzRpFR8F+uIp+g8o= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:ReaaWU+qdJy1toLzi8FmnHNngjFlvYVyqvvep42CUDDl6zdKp5U/2UjvMtX4b4GoeL2LIWwllYAbaeVfxJywssdyZgBlQ3hyL9IGzNIRuC3Rk3QLyS44+qNF52AlzCQWrsdcZZcryoq3743BFnSAUAoqgy0dNX5xZMO/I5SuFV4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:26.3652 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.118 Subject: [Qemu-devel] [PATCH v5 06/13] test-char: destroy chardev-udp after test X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" this is only not a problem if the test is last in a suite, otherwise it makes the following main_loop() calls to fail Signed-off-by: Anton Nefedov Reviewed-by: Marc-Andr=C3=A9 Lureau --- tests/test-char.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test-char.c b/tests/test-char.c index 527b785..6add1aa 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -454,6 +454,7 @@ static void char_udp_test(void) =20 close(sock); g_free(tmp); + qemu_chr_fe_deinit(&be, true); } =20 #ifdef HAVE_CHARDEV_SERIAL --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499264089363293.9610276927152; Wed, 5 Jul 2017 07:14:49 -0700 (PDT) Received: from localhost ([::1]:46446 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSl4n-0007uC-0l for importer@patchew.org; Wed, 05 Jul 2017 10:14:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44780) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkt0-0004l5-GK for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSksx-0007mV-9Z for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:34 -0400 Received: from mail-eopbgr40118.outbound.protection.outlook.com ([40.107.4.118]:22336 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSksx-0007l7-0E for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:31 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=G0umJqoE/d+IElFVGO3RpNwZ31X5WanRqmvCPSi8eWs=; b=L7v7+SjlNceSZWcwcVC4T1TqtW9iXwIvS3bCKlcS/kPVs+XcP/mvBQUaxLCQRmWItmnJ6BkbSbDC2OjySrUNeon0M9BSQao8yppGcllJEWNJ+/hqr2NFFappATlJyhLRsKtfBPyQqjNmIqEI4ZfBNJk79S3BKLygcQ+UoM5I6R4= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:01:58 +0300 Message-ID: <1499263324-15184-8-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: be8ea26b-692b-4ae4-be23-08d4c3ae7991 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:LBWErQ2sc+fW113pjAA5FAIwCyvPpMlFpl0C9QdF7mnhu4NpYXNJIh6uBNVxoyyuN34U+AUQJY4j5iNexOEysvQNh1eKp6A1gNv2tPwQkL3ARw31hMoP4LVsaPA7mbmSX4Cxbq9NI4XZCYgk/LFO4VMiOSOi39IDCi86DcUV1snz1axZF+++FMZTb7mjTWItK4PO/VAPALRqF+SJngOLHhcxkX5ApXHGzdQ0Q5oe/Goeips72fQdRno+bmAVGGJMVYeYjpX47T561dMPZNA8jGJNZjDYYWz4Q+URnbYunyOJNQgcYJlEXIs5lnpy7zLkpeNCTN5N8cKqHimXPqo6ePznT5bVIfvzE0hg67f+UMH5bnJrYvuQ7kexMKM3xtqEGzLJVNL1Ag7hmdLjJYUzvzs7vGkm5PehBA+f+C/GPbXd01w4p+P0SdDNGJqjhF+MRBnlEJLOMpqymX7+vFodaySBDVtCokt92VNw6fPOmNWhCHKib3USqSFznFA2oi7mZti6ix55LHDUtqcfNhQf9FUd7HFNDEd/LzqN18QrNfpCRee568jsij3oZ9lBi+mnXl3jMOF3KUjkApO6BIUkCiJyd2ZEQ8B75aTZxoiRHBgWYW6E8Nxi4Lf4uZ4MAXfxy1A04fSiiCrsxluQrvM33h3ImUDrofroDMYE7P08AiSFHaV7uL/09qyJ4lkisPj5ZQZ3BgD5W1UGuwt9zpiodV/v5W9RMCm2JhEh40IbJO+k7jqz0+9qGEmWTFsJQFKl X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:bMV6Vb2T9GgEk/SwshAss0RcWW/6pzUqrXvyr50G0hJbDldAbSSy32qkUAoHGZ5eK1Q+4KmGu7nDJW/ZCN3eknLQmVE5Uwuv29/oTUFneIBDiGvqLkYfQZbWaS4eaEr/6cZltDenEgBUhbdTjmivRGFk/g775WiG9eFuQc8ahHdHc2vtQWb97kpVbjAQOYUw4LnWRUCqrh4o7h77Hr7N8h4jeh+gKGR7+/BitUXhJpPUBtrBh/6V/jJxo5QEA6rMt5kDd3/P4FXp41y7NcucfUytZZqqVsO/c81y8Kl6GElYKIOpL9fGxxsdvAh82waqvaZWQ6kdhDN94tPG3FDdvSCKkwR7rM1LENyms2+GTG74Wnd/eD19XFVCYNUyqZSxGAeRdx84YTMdXRy2csmH+YpU/1Bq5FE891/XRZsjovWhnCrKqFdsSeGGtf/an2/woZwCbHWzVuWKf6Mo8ZlC2JQcXkjlRi3c+Ep9kZIg4JbPZ8QWOvzRZhhlq472lE0m5JNSrhGfaylh3aUZjZca38LqmZ2Bq5XHLfwuFA40V3F/dvYC3h2AKRbMjPMcVzaC1qN/QD7Tpm1JmAISjq7xEOCMflCrQpaOyTR5DIphuPCqCvxEvKUdZ0iRyre9uL/6U4Lckd9rbQjjXECKYAavYSIWuSK6XVYv3OJTD+g91AJylXCms2kUZhq6xtpPbIPOmbUnG0HB0+ANz9x1wna9KI5j70tXSYoA1ijImafajYS5R1BmQnMhVQtUWQ7sUVEET7Iq36lgT1puuvr37rqPu5CL1s3pITUlmghnMPSYPwTkVWOe7Ca/uSEZtl4mWR2TrzhGmaGs1mhL3/2a5eXISr+2Y/sjGdsS4tMT358DG1V1e/rtF+ykDaOyFyX2ovEdY3PNJo4te7mRKjGUzRGxn07XoMdtHweBEr+m24IMnsY= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:ls4qjL0DOAc19VaBABmXHYdh3v/INSPYv6Leah5K86kt2AvCrKto/sq6sj0UhjZl/bCWaDu/GJ7I2KnLpO0bfOtnF+f9w9jHIcwxdj4X/ONpvm+WC3LbrOyqohEsjovz+MCuwbFZuG8xb0HnsN85FT+nicnLgOYbTJKlI3+03X4kMRdxVN41HgpPpcmFnZSjPCn/zFpNCp35RZAc3H/S5psNJAU3BSCOjIj8IJMnEHACc98vXd940LqamtdGHGGrHwZY8JBvY/6C98IW1cZKOAVj66Hz3zgusVspMYG9Qy3oO0J/OiQI/CZ9KI3vPhteOn2TMaxwwBbx70uyPf3qiNCWQL60MdXY8+QAfywq5hg2+PGPXWGPnxg5lawGs6RXLdZwz/Wc3ttK4HbSpFiZOZz87AVBYDGiUREdLwnJZaa4sdQIlbZgn7DMsO+eGdgx7qj/2E1RfLkuFhMVltCd54CuAViuMtjXm3pIME+xPzfpsrPzdc6lpsK3RWpIgdXpulhhdK5zLLGjtPFM3Dajl3snh7mj54knsSIznRnAY6AadHBoGQjQUSFQ51Mt9zHYb1UwOsoQzZywZOlTL0T8SzDD58C5W4uLZdG6pVUOOYdFTCt7r/32737vieh7Sqx1o7zY6bwsmdVjpPU8IF4PwWJohSM+HXhJyJ2b9P3ZTOM= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:HU51P5j2dcBqq41PGvxxdmaCCt4ayLlOwrkYWIxHvfttVgriMGyNOkxcyI0RZDaUiDJwhQi4nrfmdlId5wKw5nqK/vwpNUD5kiL+r4si7cLKNq8bevrpLXlqfuE6hsEk0naavMYQT+N6P4EF9xd9XTUdJu660oZRhcpsI6FbdD4vVtF4qHSMOYGFmrG3kO4Uex2Je6YXwAzAD49gD1AovjQ+Z6DjdfDSoZMbJTFkOt59B85mr/pOSQPVKX6NbsyKc3MjL1VsjzxcaQf3ynIcQQmvqP4RKnTj85NI04slaQMgUhzQc2NjKh6LwhtAwjLmxKMeS3eRqkSbEj/nTF2Y9PjLMxPNTPJCjq1OHcOubn3uhpN/y2w1LmMcWmIYBB48c+sXB1pwOD+Wmmummz/kA+l9xlij67nMYbuWQhCn7LQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:GvYas84Jm0Si2fIIjScDCqV8j/EuaaWPYcl9dJRt?= =?us-ascii?Q?rWH0R6/3MMoTCjuQcMRMBkgPBs0iqMHCNzTOucV9KgryFs6YRrta7um8F84V?= =?us-ascii?Q?jwvZAw2L5DGCcXNTASkWQXTbNATUJZ/jOU93Gk6G0JAdR9eNlGMfMV/76Ybr?= =?us-ascii?Q?vHb7mC3K6S1vGft9z7o1uqmij1DrDBhaGXRT0PVuYkZGxHDL7RTzB2g2N9d8?= =?us-ascii?Q?cnAotmIqDiGbDPYGv4zZ58fgIFt8okvXIV/i9KLUGKSGJKYtWvoxgOF2J2n8?= =?us-ascii?Q?GesloMOWgPgcvhnLRhiG/qx01fgPspIYPhYauw2iegRXBUqzK8AqgFH08y5i?= =?us-ascii?Q?H+dpUniZg4tN6XYHH6HQFuCWhrz0uYZrMyBZ4F+KeCO5WPB4tJmMYiH6KT/2?= =?us-ascii?Q?WgFRYEjtmT87wJmgP7ZvWLtjkXNtSLJ/uJSjOmPlPeJn+GhMoD3/ijZLcPse?= =?us-ascii?Q?IuzaQ8/OLXkEEJJA0BurfwIKdvSZPur+yH3LATFzKyYfB4cAuiko1JMvHwVc?= =?us-ascii?Q?ID8/9irC9QH2eQMVzZokzQz54/z6UMyVT1N6Z3l5pS7WtR180uqf0BmTZ3QU?= =?us-ascii?Q?Yo4Mb0MKofPQQYpmfo9o+sP63lrI8ceSMNJ6qiNDdsZJPSaathnNJRmL/zam?= =?us-ascii?Q?Mmm1My1IsyfvSVYX/RsKNlpsTp8+nOIwXEBWrzUxgvJK0GfSn6fYOha7Xbff?= =?us-ascii?Q?E01yqGPvZc0Mrg3moVSDKBPzYuDvpHAA4gUgU/4e04XTMb0v0LQuUEdqdBWR?= =?us-ascii?Q?tim2Y2iDzwV7gzEnzGzFIFnKvI0knfQfoDEGgX6/HRhfkE7gl8UNIoK+yUTd?= =?us-ascii?Q?ZpTEyUDkisFLgMirZLnH1x2yqCv84mf/wt93aT5TxpwE9gY5cP+wAMqxaC5u?= =?us-ascii?Q?csMNBTbu/a9KyEjzBCqqPIYvHpsm/w1m2sjMBxvKWhUsZmnmyZJ6M8eExBJ1?= =?us-ascii?Q?R9M744DdPTYilo/UJG9bVXUpStUh/iinhkzV+uPzJz3Cv/jfNJbFrISBSRjU?= =?us-ascii?Q?DWtx5BpsEnkuRdkCACTe9GTJwgaV5Dv8dLA5KboMBgD8WQ3JI9cXWAmzYwgF?= =?us-ascii?Q?0/jxTTUp13peLBuDWtAfk24/cL1Ppxtr/l+dG+1yM3/dIW6qd+GFZSUWyH73?= =?us-ascii?Q?E2ik7I2EsZAhSr+p7wZu9N56cBgXAPsQDga33vdYwezRIK3cDme/3XU0d4Fb?= =?us-ascii?Q?A7d9wZVFc0anY4A=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(2870700001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(23676002)(7736002)(6916009)(47776003)(305945005)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:oCsyI5+K0bY1Y+DZmPGOIKz6GCcUXxVtxUO9LIs?= =?us-ascii?Q?abgX7v16//YZUtyPMjN5FBxPnZpjfpUx9a5sR4kjRCjY65D9P7VQwdJKajmC?= =?us-ascii?Q?g0sCjJsC6Kjq5360sR2OFMOga2lSvvI+p9YPqfOgprtYYdsZDNx4CyE4A6L/?= =?us-ascii?Q?nLybIJCAuUNwJxFW32h8HBMlVZ+bxmXrtLqUUtetVbv/lwTa4MhyaTPbl+w4?= =?us-ascii?Q?VhnP3/cBLz1rWSaKJdxvx82/CihV2kYmXfUnC3YWkjOu+p86TEJnqphR9Z8g?= =?us-ascii?Q?X0FXEXuRBeQ/bkv7+EBEJq3Bh1vGo38Et4/0ZQEvNkznUgenYd3Dj0/YmN0G?= =?us-ascii?Q?xMtV4YDjBffFjppW6phRcV3F7hreNtF2Q/bsHzh54Riq5yun1/BI4C6w9+T6?= =?us-ascii?Q?RwzXdvvZeLr6r5rUrpAJs8PQ16PJtpujO+yRauGlCuIwPsAGkUTIIqJ6foX4?= =?us-ascii?Q?+d5P89NEbeejn8UqI6iPHX2uQdeBu5n5c28dG6XHLm3uwHpBpxvdTspJccDt?= =?us-ascii?Q?gP5Bq6nPdkLdN+oJS3OrRLd+A+VU8lojFzeK/QgGr5+PHdrBevbVGw/u5pgL?= =?us-ascii?Q?BBrrhqc2tORPjkJ0pO4smvQWqTUv2vJ7CngWoo4ZYurtl4e0fC10H3Kkzx/A?= =?us-ascii?Q?oHWC1z5wcGGSPjTZuTynPTp1V0qYMqL9Y+PuGnuN23OHhVUd6Ficp2PXk+9z?= =?us-ascii?Q?u2rmnYRMgsDl1BeAjUqYNqpSCcEyepN/lb1SG1nGq2F6TnsGtaT3pBFYxc0u?= =?us-ascii?Q?eixz6gncyxewD4ve7EjCX0grTo9I9SiYzjorQ1cDwx0O2V52PVcsKTBTXTAS?= =?us-ascii?Q?feI2CyJ0tHHScOntcF9hvSFU9CAWHo7dpUkm27mIJUzin3Do7+aRuUowWm1z?= =?us-ascii?Q?SAJ3bBIOvhY6BHtvPW5WxHN04njWOjvfNapdwT04AvJgO3fMhKEMa0JLint1?= =?us-ascii?Q?OBcpLvBTLb7Dj7hfKP3AvTdCsCVNL8G60kUf0oKSOTWDVKpGIsPko1kRWzHP?= =?us-ascii?Q?34RYRZ6APCFaigaP7m01ImbfWrjpSwmi0x8K5ApOGBPHcGsHVZkOCxVs6JT6?= =?us-ascii?Q?HuOavxSvyE84xdHRzkeIDZ7JB0Xdh?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:QAbxL+9B6dknpuflOkgHmoDx6wE6WQ1xEVFT4+zs?= =?us-ascii?Q?zwHq8+dvtBeJBFVU9NWeDyNS/M/vHkJ6tPQrHcpUvHBP9uNEsKTj//YaE2c6?= =?us-ascii?Q?3WFLF9YgHQ8Z9mPpdD11wUo83/RJ+NlBLTrUZGFdXCUzWWiHeKdN+sIx1jKO?= =?us-ascii?Q?sVHXhlAERZKzCnVwLvVUpvL7bvQANsMR41nRaWZmkR4TdYeUXCP3PipVhCQI?= =?us-ascii?Q?LUfzSuawvqzDiUofgKBYIiUXLXTy0UxKIl74+SufsBlszkMLSQ4wBcs8neYW?= =?us-ascii?Q?oPpAoC5RoF5as5Ocx0hfgCqAhArmnldS7uNYSuFzUPdcMqAexOjXscHru02G?= =?us-ascii?Q?iEMTX428TaAnUtzOC8QXV81yXUOVM2u4SrUJTpat3WequBYTn5SOkzdRnP5O?= =?us-ascii?Q?KeKnxkIehHirqlAvNaaxgWju2mwP0ooAiux6JAr1vBgKXayGC903FGddg4jl?= =?us-ascii?Q?JnRCjtx/uArGS33eI7mFNtTxaGF+jy0Cxg0jSlbUlC7XqDPOmdvRPJ6Yelbv?= =?us-ascii?Q?PcYwwMKo7/YT2Dy2n8QRYzrFtXssGy4XKwVjtdtc5UPSKsR8SLyYoltto256?= =?us-ascii?Q?a1wmcCoz8D6I59P7FqbbahIJQoCshlgtE4ocuGSlVOTtkemlqpo8mpeKeWSR?= =?us-ascii?Q?fCp/gBjnJmTOFFkI/DirUzS4N55kVqtVvOwPrIRkW4AxUobpXqyXWUoGVTVQ?= =?us-ascii?Q?hvNKem+hsVkBBTdARFfSD+5+OIBxX8RE70Sw8WSdltgVtA6ZQqwRzNiW/keO?= =?us-ascii?Q?atkaOBr0K9yhg4e1iRgQGiXMYgoxG7Nj6NGYn5k14vQGvRg8V2oGmMrEf2Oi?= =?us-ascii?Q?HCu+X6SeUMl2RqCIg4aoXUGvfwPKPzxSXkDJOTbVp6ttXVPK+BL0xXyulM08?= =?us-ascii?Q?8SqPTMtAUbZGPvvevEdYENEAHG+/Cwu5gpZAOfm0j8cMkAK9gFe8OTtcZxTW?= =?us-ascii?Q?LeaPkVhMCEj119lz9OqfeHLXuIMuA8Ix/ordZDejZoKNMRUzapSGUzWxqBde?= =?us-ascii?Q?IjA=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:P+1xU8G62w3iJytdLEqfh25ylbOx36stpxByeIQ5LyN9NiY8S+hHfjTy8XQjoLcI/CoV+OPARiIClt8k0EQvOprdSbEw/lxfP1F3RzgF2oozxAM6Z6VFMH0vNwE5Es5Jupzl/P/tu/U0dt7nTbyvIsqV6r6ouxjB/ChFFXoVaC+z0EgXPqrNDNDWXQlOxz9tKG2MRhgYFj+GnrWNgi/Fx5cg5qn40CRxSNTj+pdFusiaFZ7fveepLNTYyhImk9LIIHQJSssZLFaRmxczPlslqjw3qXQlTfqk1QqOi5sYhGC6m5hBNjMVFiaRwoGiGQyi/lMapMYKcOLEpPtlN60Kr9/pMcTI6F+aeDls3eOhV/3EOld8dr1cbXfXOAbSDdiYBVDq2UC37L0o0s7lgxz1Wuojn/fPvwnEeNCCIdhhV+5kiT23WrAudkTLWw0Rnep1oHDMZLojgr8BbsN1/D1sgar+h0t8+vwoavgq+vLYAAv4/HKXF5F80BUIUY9+ndqG; 24:3IZGNRmHe0MPAUNYuJtcHXfZtiWIKIP2LK0YC9GHDyyFBBu2Or119sFvsn+vzl49DBDJAnGoy2FyCRiOuTzYwzJgpZjfuHz83CtmymywFtI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:gQtwHipBq5JFfXP4nVWSWe9x1XqDGUK3hdWHJIDy3681JHrwVieprmjUpsRRwnVEuRk1BoMo215w5a87b5iu4UKMEJuWr65IQdF4pkIPVDcuCpQQPTS23uYzixpMAsA7GR963sk+n3BLikw73gezCOYT6Wfv4r/NhZzn7c8u+lGctIrN9GiG7ah6Bbl06Gh1l7S/REuWmPE9Fvo9F5ie6gb9xpoKKdM5peU02mCCwFW8XikLpYkZCMB6oYL68wtJgLv8CLCdeuzgRBFECOAn+ZNwvBNUr/A0jjoOrBdjMGYA+JipWB0zd7sQ7iVhgsebQYBS8rleKQ5/dSjBgsep2D3zVbdA9k/Hd4os+Llhr6S56IDiaJNc3KF0s7okMmHgXHMrBowTErDZHZEB70x0sHPClmdTDnSYjOvA1oDQzszSz3OxmL5ZI4uJi50qVgh85SZrRnwQEfbe+iAFbc/40x6bkha2GzleZ/W+tT7C83zJu2acNIKu0bY5NlGRuQVZzui5xwcOZ3QPUFjc9DZSxhnTddcvfaly0IndcFD59u94C7KkW67leaileaQX3Z4KfG78nTknAhQwCf/mYiNz7ecSRNSfvB6U9U31Ezg5IhRFL7S4Q8dp1YH6WDcTTK1Q1UxecZtTaPy8nNGKH72mlXNvCYpJdjEXrK0Xp8Ll6r8PxSNOymlwV9Lh1C6N/A2b6npNEUOTd/HP0iK2B0TD5tpFYcu6J8FZukM3oktsWIeTyEPnLrDcHsRTvNlM5qUFqY5O7LNXBVygjU2RzwWYBOyV8yThIRHgyVdJIksoUYw= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:fbEfanb9ZbPlE3CdDv3CA3ZXUmXgoKgdW2MDoATS9yVc+/rjPufebQUrKX7i6E5oaFrIn2ecX5xp45CF0FXhoh98jyHUo5X9Roj8ZMa/o+7qOfslEcBlVq/NvjMCL7eyJL2hT2tCt6TbkzTeMmieWqm75rguvZ195OpclxNMbyM= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:28.5215 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.118 Subject: [Qemu-devel] [PATCH v5 07/13] test-char: split char_udp_test X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" makes it possible to test the existing chardev-udp Signed-off-by: Anton Nefedov Reviewed-by: Marc-Andr=C3=A9 Lureau --- tests/test-char.c | 56 +++++++++++++++++++++++++++++++++++++++------------= ---- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/tests/test-char.c b/tests/test-char.c index 6add1aa..1265224 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -411,16 +411,11 @@ static void char_pipe_test(void) } #endif =20 -static void char_udp_test(void) +static int make_udp_socket(int *port) { - struct sockaddr_in addr =3D { 0, }, other; - SocketIdleData d =3D { 0, }; - Chardev *chr; - CharBackend be; + struct sockaddr_in addr =3D { 0, }; socklen_t alen =3D sizeof(addr); int ret, sock =3D qemu_socket(PF_INET, SOCK_DGRAM, 0); - char buf[10]; - char *tmp; =20 g_assert_cmpint(sock, >, 0); addr.sin_family =3D AF_INET ; @@ -431,19 +426,41 @@ static void char_udp_test(void) ret =3D getsockname(sock, (struct sockaddr *)&addr, &alen); g_assert_cmpint(ret, =3D=3D, 0); =20 - tmp =3D g_strdup_printf("udp:127.0.0.1:%d", - ntohs(addr.sin_port)); - chr =3D qemu_chr_new("client", tmp); - g_assert_nonnull(chr); + *port =3D ntohs(addr.sin_port); + return sock; +} + +static void char_udp_test_internal(Chardev *reuse_chr, int sock) +{ + struct sockaddr_in other; + SocketIdleData d =3D { 0, }; + Chardev *chr; + CharBackend *be; + socklen_t alen =3D sizeof(other); + int ret; + char buf[10]; + char *tmp =3D NULL; + + if (reuse_chr) { + chr =3D reuse_chr; + be =3D chr->be; + } else { + int port; + sock =3D make_udp_socket(&port); + tmp =3D g_strdup_printf("udp:127.0.0.1:%d", port); + chr =3D qemu_chr_new("client", tmp); + g_assert_nonnull(chr); + + be =3D g_alloca(sizeof(CharBackend)); + qemu_chr_fe_init(be, chr, &error_abort); + } =20 d.chr =3D chr; - qemu_chr_fe_init(&be, chr, &error_abort); - qemu_chr_fe_set_handlers(&be, socket_can_read_hello, socket_read_hello, + qemu_chr_fe_set_handlers(be, socket_can_read_hello, socket_read_hello, NULL, NULL, &d, NULL, true); ret =3D qemu_chr_write_all(chr, (uint8_t *)"hello", 5); g_assert_cmpint(ret, =3D=3D, 5); =20 - alen =3D sizeof(addr); ret =3D recvfrom(sock, buf, sizeof(buf), 0, (struct sockaddr *)&other, &alen); g_assert_cmpint(ret, =3D=3D, 5); @@ -452,9 +469,16 @@ static void char_udp_test(void) =20 main_loop(); =20 - close(sock); + if (!reuse_chr) { + close(sock); + qemu_chr_fe_deinit(be, true); + } g_free(tmp); - qemu_chr_fe_deinit(&be, true); +} + +static void char_udp_test(void) +{ + char_udp_test_internal(NULL, 0); } =20 #ifdef HAVE_CHARDEV_SERIAL --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499263805233419.01922622941277; Wed, 5 Jul 2017 07:10:05 -0700 (PDT) Received: from localhost ([::1]:46414 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSl0C-00035A-K3 for importer@patchew.org; Wed, 05 Jul 2017 10:10:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44841) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkt3-0004mW-ON for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSksz-0007oQ-Rs for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:37 -0400 Received: from mail-eopbgr40115.outbound.protection.outlook.com ([40.107.4.115]:5184 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSksz-0007nB-Aj for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:33 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=dh/ugRaCFtY7hp4t7kP5z80+JklWOfUkqX5PgVZf+ks=; b=IsO9WmEVv/JdeA4UQX/dRoNvG9clyc3SSTxCeubOCQ0wJ899YhVyyknSWC6wOrI9U0NYQYVdbdbYvhrN225cJ466Ni1yna4mpH/7gwYp0jAZ83dzyHRot6MbHBqK7HMMIFwdzD7SI4y6xnJk3S50DFhH8cO8HB4Vs4d0t7AgPh4= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:01:59 +0300 Message-ID: <1499263324-15184-9-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0509b664-1d75-497e-78b0-08d4c3ae7a8e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:eheVZF1lOD+1FjmUqgoOpgSdh+xCEStbjrpWfINHxvR8bYZSyFkVVYQgBT4qu4aP8UjksgxLfTF6+N6Tm+Roj3+q/gr29wa6fNqCcSYfj8pYBS1kIpaMYLJoBTLhWdTpl4z3xnEL2hdLSKE9xZH9bEfBrxckiOBE/A+t8pddDVXlX03DbzqMfk626h+rDYpGmS0GrzaMA1m19MdJERJqgvhIaJwOMnjtsvL/hHprZ+vUFosAQFeGIeX2kO3Bv4b8+G3qhaoDvNBdAtFZQiAuhjMmyGXHijhKRd3yfqYqsgX4Oz2y5nxI9eVL7bUmNguo/IGHmEN9iqcOSIwr+ty6Gxviem1rDGPsUonefJdymLpdgEWvSBE70Ga+1QA0jcQoQ/M0kKIypryY3ENRTuZGNoV9KuyUb8I/KlfHiLNw4eecqcaeUzVVpvOD2lK9RAnvNeQ/kUicVMwobnrQFm9Zi/7nHN52Q8co/sQpput0wlIpunOSnTIWAqsE7NNRfBgc5SyIWdBmskQSt3wwqBiCSTfF4Sq2RFjTjy3XOKWMvHenl7FxWtSYX39OdAvW9+NJoRCrPgCv5ahntO3vT0MzOD1xr0LP4Vzk65ZxC/uQNdkjm8UT2jymaS82LF1LTW8MeQe5M3T4fzSNafooxh7HvVSEibRBRLLNqC905sLy3v/RKO5O2R3X4sRXo0N6gkrIC6DuyvUubQYspMxCSmhKKeRG0xqlD1YV1ThAVdfWjHffsm8b7l2Am56CGZuNVYfi X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:dvevg0Jn8XVve5EqQx+i4J/LDGd54n6zHPEfm+cBezoAqSim7oVpLxyiV2k9wnd6QkAKYXsaIIW6jrwI3XDHroGadTIQZkRzjxEANf9D7EVxeRstKWFRCfK6GV8tE8oRvJdeIUoIA9mQgbTp6LH4x88zcocCce12AHCd/j5M8Gmi6DPITQ3N1AuGwU/YbxJ5uHj5wNJ1aNrkg9ZcyZDnov8INbtrKzjuX0hrHUMxiJ1BsycurN4kpvnrni27wHYdc3PirrasjoeG6IEzn3XyQFrwzTL1wP1L680QTo5B0LI3PiN8d0Vedsm6isS7RTXYWChO4aDactBsCdigfPqVnB6goOXmi1qnv3hhYT7KZVg8MkBpdsD6WG1hjQkDf6VNhm3xSIeEIkOigUtOMw9uqThgA1RO9XsBfUpgcoQfE2y0Cpm2OBbnfiAlXpCwvWY+BDi0qw8ed6fBJteoNaulKU2N/c95ba1vB/INEATogDFKvn0+fW0g+MuKinOF2aj1mKFeXVMsm+7/Q8rJlZN9EV1gjAvuFjIYPnMWkq0QlhjQ76eF+CD+VBdV/9yhl8MoMoImy8wyeW524KoYQZdJLfL75bp5lA32UQ7xm3U4iTN/HDC6f/jrZozK69M1OuWM5XiDiay58vVLXUefJee2uu040ZPt/rm+DMRpFNYpvOm4S828GJlLmIBQeas0kKbgP7AVDdFfrVRDDcmB/aWQIO7+iicdcu+ZCoPPEEUj734RAqY4yKymQIaedrdeoS4dlwJIAY6NIHeQqBDTEjnhBVoi5MukxfeIU2SUyw6FoTFgl2fS51JrsUOObwv4GRCzHOBslimtjRn909H1wxCbrUp5mijanTtcHcSLH3cpMmwreUlw1rMDRTvIJdZb/pb133XK8afLoG0Wn2EGEExoFg7uvC0+AqMaqPxwfG4aPyw= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:VP7j1E9xxkRIrax5CPM8SmEU7WiaGrgu2aPq13qKsjagn3WQ9+5+hnXumZQB4SMc+5Fjy6U9RR2wzYXPzIFEN1CqSIPR+HYLWd2C4IGoZ2YLvoT49k9wiRE88w+mcBv3PmaOWzNs1NYXUl22Sg8/j4u+55HqXZdBowZGMS/LYDx7ESDeGDaXyTP/TSX+qv+KNf4dXnKygNR6G7umI6dGN8QQ8crG5xQJ+eL7H6yA5CXjKkndg5go/8XXb4zRIzf2Kgxk/LC/L+rmKcTzV+cYFWsmTFx/ugItWgaY8ZplfcQKHBFew2hCkJHjQqs8cOaxOIUzbA5ziGq70DzLKVsDREof6M1HV4noKXXIfxIjfExkCAfafc+CFtIs/aW6M/6xGn5Vl2854+txLoQ7U6qYdo65n9TcN0eDUSDnptHIDM4ZoGQL/PdG+ozd6CXxf1v+JdjbixbaWgZWNI6w3IQ9jWFCfVPttjydFhMHDERoV1Ia7wWaQKCUxsnZy56Cqt7i2t8r6b7zORIZ+/W3c/IU6AW5XO3PPgMZJCvKPEStWSgWK/4latvsKRI8g6BmGGX3hw5pF1nM45n1o9qulSDnbGRJa3ufoH/nyf4HlILUR/kG50G32LcsEherCisP7h7OFtRsGG8txDjTQlg3Q5nKq+OQihwb1dF3kdCxwLZeJg8= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:DdK49h+DOyjxjnm2mPkKZ5E7MqYzGW6x8x9gPyxEs/1XegZKup1WHKFR5R+WPedIdHDIgQ82T2cZ3Vg1cfdVQYPtN9RPwHu1okNKv3DAHZLhaLIYYXvWOwd90gurze9rIAerHdSUqJpbRMp0WcXn80nGHtpqysaa80itgv7IgQHO/15F2lIKmO0W1tSAeopqAIFukYofw0H2otk1hV7I6xEpaxErLA8m5SpTCuIr62d87j/vkKRwoi5cm0Yzcdmje5s2O8O8vZwPTFZROK5UGEFMeA6bdkTUuuNG1Qnq31nMdLkGwKDjo3TSYY4XZWoB5wJDMdv21lW3ovgCeczMiMQuYJKE4mviLDJelNBVarFeQjXdQxDEgo+TI9QGyQHDjqYmCmD5xqfkhDZ3z9HvIIB1ZDnGUPa69IUvVXWMSHk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(227227094722967); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:+833aMblgRErQfrW72Evtp2KoeGaC5G8tMMvXaM1?= =?us-ascii?Q?ilJwx3TKxA8Qzzcs2pwoqaWKLa0Bj774nwSnb97uSHyF9hP2VfQk2aJeA2nk?= =?us-ascii?Q?4UxPbW/Mf2vyE+rsD3huorcyAkzxtFyBYlluA/47VowCCiry77pLZlqssQQQ?= =?us-ascii?Q?x2JPcq9KCE+bmQjwEFWMuaD3zmYDBz0LS02s6u8x+vHrtfljtnRBgSAzy5mr?= =?us-ascii?Q?QLLT42CYWMbtAu7ARl+Pj9vn6iv1l+wcCHfd8V+rQiqJtH344lUALeiHip6l?= =?us-ascii?Q?0M31ZnxDI8ZfImoy4ZvyRQYRa1pdJny+UtpSyJaCCTE9q3J6Y2JM+EJY9MiW?= =?us-ascii?Q?vW9pyXMzDNR3MU+nlDHYeCHK0kvqD+JI6GuWqQ47WwmeuuDXOVTX7NXZlV4S?= =?us-ascii?Q?9i/Qa5Id7G6jdTZyR15V/j2dfX0s8PaiJvu9BLKthM60RsEWRAOPZ/QHuACY?= =?us-ascii?Q?beiUHlqqNSYYze8yoaBpD1lfjDa5t0Hegmo+Krme1IFi5H3b2iTH9KUkM2X4?= =?us-ascii?Q?/AL3x5sIdNJbgkHmq71DATlGKXA/COfvPT9VnNXsKs/D0myROPhnkg4z4Hi6?= =?us-ascii?Q?RfrmRIWF1FICOmuCzfj9CzuHie2gOZ1anRhKTyyqhUr/QvDpuOpuBOp2HZm2?= =?us-ascii?Q?mxKJ48RT4IFDfyKSpvqCyEHN5PlIaAWkuEIBmV6WvgfqN9asgeTMu1Lb9XKH?= =?us-ascii?Q?896KmE9oOUQ941P2vC/HFfgjV0dY5bqJeWmpJmizp/J6hj0CPMYh+iT4zOB1?= =?us-ascii?Q?BSDkPJhurFx6Wzi48eknPOkC9/Hz3MLdJ8GJ0yAomLWU8wHpuQrsNnM7tOP7?= =?us-ascii?Q?dJpUDww5FuU4SdbTHIDlpKDfB4JgHGvU2W2PDjALon0Lb1CALFX7jBi2oj5B?= =?us-ascii?Q?ljSisfOe+vsm2Bfrl33U22QkWfJ49AdA1CnZ5C92ye4HFE+8/ImFfgpUh0VF?= =?us-ascii?Q?EnTaFWxBo44dPTliNoX14CExUCJoTC5HYwgaH1rnZ9s+ZncgkZ69OhU4W3py?= =?us-ascii?Q?mB5w/yuNkQc6ba4lVJeXdBoPCnzHxsGjirzCMcAgIkWQyUJc8u7tWIQefjMk?= =?us-ascii?Q?K7O8V6nmEYm6clLuJsFHmG5C8C84Jgs5pDOUpc8Y3petYmFh8zHUoazNIAEg?= =?us-ascii?Q?b+RBl9X3zQDAzq/9xlW2mvSoS5oXd1CkKZSq90ExomGRdxQ+FGSvDrBqF/B8?= =?us-ascii?Q?Af0p5GnZxqqfKQX4F3TcfI3vEAM/hanl4uY5bwjxKq6i0l2IkufA6ARrCw?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(2870700001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(23676002)(7736002)(6916009)(47776003)(305945005)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:5Fskhjv9HcAj3gd0RCnpk972PuzZS6vfIqtFWm+?= =?us-ascii?Q?JXpQEJDuZsNuRiANqo9MTYxAtWgkDHVa7pXR9S4JqKt0+7/1s6waKZEk7j1F?= =?us-ascii?Q?QOv67k4zoKK+zlauOKwtm2g7XzYlCIc3AE3uy/UKrRRAnls9mQyHnICaTGJ0?= =?us-ascii?Q?jdLhSvtZyHGWvwXWM2w94OwtaZQOxGUyS6KZMSitUH7yVUH19PPoVZnAjhgO?= =?us-ascii?Q?CHWhtwx9Vx7Jgha49fzlResqX8AuciFfGAioCQGSQtqsH77CerIDE6zAlTcq?= =?us-ascii?Q?U7ygeZaVFhVaz7LVLTf0ITZxJ+PRwHRnbhgxnOwKh+8d8RurnqxrxgZTrnHm?= =?us-ascii?Q?cC705xKfdEZPZ6/bgrzwuUncnCtNk1tdaBYQ8qOcRCmICjetpULMPWzWE+uM?= =?us-ascii?Q?osCjKFuyOAhdoho2leM0xcOuQONwewrQNtHAekPrPAiM/wlgTGfdDsKJdtw0?= =?us-ascii?Q?kQ3p8P8aiFXvNlj10CA/ZQIiZqlQZQPA8gCZNBZzlRpiKPJlrDxvDUQrCFhW?= =?us-ascii?Q?k7JbGUTu269Czw7+jOTAOPwJ+RbNQp/U4BlDyLymm3Z/JjJtVuT5c9XwveU9?= =?us-ascii?Q?2przxph4GInTx6J4DS4AKn2RmoMww7QSNiu9RmT3PHZ3rW4wAYT1nOJ4nwQV?= =?us-ascii?Q?JKIWP4HzrdMoHJmjS9HxoOwhKcvb83iCf+1JFd7MrpTb6pObOy6JpoLHpT9z?= =?us-ascii?Q?cRG3uoFe7VARB+wyPdn/nzJn6tLgZfhVSqOcGTVxuV7UsZClmvCruB1xQQQl?= =?us-ascii?Q?a5m+hOLv91mI/VpkiDUmGqFwS6WXM6mJ+a4PgBHhGxa7taUZ5LghkhBegpD9?= =?us-ascii?Q?weArD7NWhM6Zga1QWAcF1mneF5phjK+SIGF05/F2HgPbusWxIdrEqTiiFK59?= =?us-ascii?Q?SaDlvHbCfmjOIR+csW9dbFcvF5GdwbxqMT+aKYX6MU6ZmKSTlfu/dV0p7oKz?= =?us-ascii?Q?nXeH4GYUM5sw8W4thKwuPXMNo/YLwHR1WRsDNefeoifPBvGlhQF+xr5TQBHV?= =?us-ascii?Q?Hd9cVQ2msChla+3HA2bYjCrumrx6c1evvApP2GwbGWlFT1ku77XKOfpAuze/?= =?us-ascii?Q?7un+3OvUzV2rf1lXdB8/BCTnAiGLY?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:oxoZWuQFc4Lzcq9c8iKFl2p79fW2GPR0jrTmZh7U?= =?us-ascii?Q?JwUkmJNVgSDdZ+raO5YhLGXVW4PoNjk7W0ezmr7BFDWOokibcct2Py1yW684?= =?us-ascii?Q?/sCjQ3LRUhzJLQXtZu0Iou6L/rirx8Jvq+9yFT9ccdHYtLoZWnax55VnRgzf?= =?us-ascii?Q?C6/hp27FKveJL5U8WAKrI43ftAqJzsR0poFVGscisB7ycw+hnhG0211D7T4n?= =?us-ascii?Q?pFgcSMG1NntQBLznTsuYMlzLwNFH2JekPNNQ0P/nLcdOokQ6/J5Y0HHmxXk/?= =?us-ascii?Q?SKViADnzNdYNs/Qi8hklVQCZg7UO5yQ5gKgxVdh4d04MoTdr7k1OjaOmvCmv?= =?us-ascii?Q?ZR8eJEtnxkdqEzZ0JFjdb7wHajkDINJp4CCBkLoQoZt7FrFVLLriiWBi5af0?= =?us-ascii?Q?rkZFqa9sQ448gPvUx17RyR5aMexzAQzu6JfZImfHBgeZYFXSI/zoZ2TCeclk?= =?us-ascii?Q?YWLhowaj4XRT9c+vUefah/XvM+ESl8dk1ZgZ4fm6uVrEhBToIV0kUn4OMY8v?= =?us-ascii?Q?vvMFsuKk+9nxst/PI6P74ZI6DJBNq7PcVl5i1F3pKX74wBc3e3gltb8/LlIO?= =?us-ascii?Q?FbQ/EpNehkVLMFgLVHOllnNux1qcyLrE1RuzpFSnmGrZz3PkJFD/RIbI7XRD?= =?us-ascii?Q?9Nt6Q/+2lAJJGqfI6XA9kyeaMUazKvOjgfkM5eOPUOA1vuVs2In8YL88zP0A?= =?us-ascii?Q?URokIQielkPeTDW+SsLRfZmJhph9tYD6XcQlgDuxMlJtFCHPQcVto8/+Q+ju?= =?us-ascii?Q?9LMbenl+w/QohYsg6Rl+czg+c9ddmVUh5tXGWoP8hzJGGjyXdKwBKGi1emDy?= =?us-ascii?Q?WZu95jdqRGI4kExE+Fq3Oktz8ljYvNE8Q3tTAfw2SlFxmqmdH3JcjuMl0ZP8?= =?us-ascii?Q?CP7aMqcUqax7k/fJQOh9uqhK72Z8Kp5ExkPLcOVtMbG4mJf0i1NubNKd12vE?= =?us-ascii?Q?+1MzXLmp87p8RSvg6aOQRGiKRdsZcreEtNF/kKVlOnQ6/GzPETI0XeuIHKLb?= =?us-ascii?Q?l6c=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:dJEyHYNHMTSnvE/aAmfZCIhKsGYHynMe+1xYOB3njhqz2KKgf73h15h0eV3ZhhwzGR505WAr8CqMR7IJAwWa2xV2BXdZVV3JYD4hB7iBv3V0siVuRGdeIUZipK1Be3pbB5+7fX2HZavm8XMAf5jlWPDfkRU3kB949FFF6RrHv6FZtMOVrH+dZ/+EniA1Qj+jvM/CCCrEPubg0vbn9FBF/FplLpqC4l9B08vsGdMCB1TMq0pjZJCBbnUX73GB/abHA+DvCBfpUt4e4sIuzfwSEwBTIKvwFod6Oedpdajxea17KWg4pWNESA83XKl4CE1z0qNQQFuKUM1YVayf0mqPeKYEEyLbF+g9luYqUWetj8pvUoMxraaXef/sdbB5upsxZf7IWHu/J5OwtpovdW4iVTOFNI/kwVHcxEkYtS098RhKyqItr6EDACHv9vMfy4SvX7Zg0iSE9Z6932taPzCN4j5q9r7Cq9vc9eaOQza3uweBUS4lMWh7RcxsZmna6Tla; 24:azV9tlgodVNFRPnY0nWcU/oOzxTm90jLQ5lPO1lLKgcMBNzjndAsFiPqsD6+QmVum7IrU2BMBIMKf9KLiGgOOEmtSfFgZSlTcOv4F1tLPSY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:56TO5bWCv8OMNc7GDgj2Wu3Qy2NZf56yTImnAWwizJixKJhuOF6gjuIhSNns0s2UvJFBXMG8yPFZL0c8PLzE25Hc8VlttXEIC84cKeiKwHq3cZz5AJn9VkQ9iOuxaXoeYBnF8eVTKlin1/DkwDol3cV++MajvcpCKld2lcg2tzFLtqQ01EgoO3ktS4bYfXE4bSNVT3u6qFs+puaGsVcx1kL4V/BpHnp7XDfckW1WxdDAaEv+lecW9MFp6xF4yn14tKYzOfmGsZEVKpOIjSO+y+SErfZ6IykbRWKc1evlOvZc79eCCige8r3iC/KkxXA2zyo2LzQ+hcgHMNDpZSL1asmp5y4M6rCAUOoc6QAUovy6NXAv3zwETjjLzyqPXF1Y01xrWxzQH4uKF4Cum++bHaA9T9SwLQ6JCTALPOPifbi51tNVW3+hl984fY9STZfMffSwwZi1id7hiCR0PKFaPdKxZbdZ+6bFwCU+c/M+ZPJ57NbLVlo+WdaUPCItVxDVWWDAYCoyStvZNs/HIhKZEKfuBP5ZAf9+wc0vqqKfOb6pETyFUvPIBIiN49YgLqhP2Czb66vtHG4jQT3rJj/OX3WdgCGvxAa+QzQOYQbH2XgnRM6DSvuwqDuf7gJmB7EDIrmZRNsJAYAKvNjtdj/SsHBT4xKf+SQYgxUaK86Z+QLB04TkYzoU8JgZaPVgASCdlYQnz/kuQryz+BQ+2DudCmCwIEK9MzMfZMA/ZTlo+7q2hvlW2ubWiANOJwQbJLkjRJrsNwW4cMqjpYtP1mkAegWugLHvV3/Er/xR5z+byDM= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:cDIzbGwZwYOyNCXiYZKmmJByE1mD5p75RSHp4pM5x43zwf7kAs34kFmt3PkaucEljpH6Ihv7a2F47kCOChN8ob0fsMy45VVAu3hHxm9Lq8JulbuF07IlB/+0WTWUIKjSQiRljowexahisSMNg8D78ErvvvI37tgyPXY/m5VItdg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:30.1934 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.115 Subject: [Qemu-devel] [PATCH v5 08/13] test-char: split char_file_test X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" makes it possible to test the existing chardev-file Signed-off-by: Anton Nefedov Reviewed-by: Marc-Andr=C3=A9 Lureau --- tests/test-char.c | 137 +++++++++++++++++++++++++++++++++-----------------= ---- 1 file changed, 84 insertions(+), 53 deletions(-) diff --git a/tests/test-char.c b/tests/test-char.c index 1265224..de72974 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -507,82 +507,110 @@ static void char_serial_test(void) } #endif =20 -static void char_file_test(void) +#ifndef _WIN32 +static void char_file_fifo_test(void) { + Chardev *chr; + CharBackend be; char *tmp_path =3D g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); + char *fifo =3D g_build_filename(tmp_path, "fifo", NULL); char *out =3D g_build_filename(tmp_path, "out", NULL); - char *contents =3D NULL; - ChardevFile file =3D { .out =3D out }; + ChardevFile file =3D { .in =3D fifo, + .has_in =3D true, + .out =3D out }; ChardevBackend backend =3D { .type =3D CHARDEV_BACKEND_KIND_FILE, .u.file.data =3D &file }; + FeHandler fe =3D { 0, }; + int fd, ret; + + if (mkfifo(fifo, 0600) < 0) { + abort(); + } + + fd =3D open(fifo, O_RDWR); + ret =3D write(fd, "fifo-in", 8); + g_assert_cmpint(ret, =3D=3D, 8); + + chr =3D qemu_chardev_new("label-file", TYPE_CHARDEV_FILE, &backend, + &error_abort); + + qemu_chr_fe_init(&be, chr, &error_abort); + qemu_chr_fe_set_handlers(&be, + fe_can_read, + fe_read, + fe_event, + NULL, + &fe, NULL, true); + + g_assert_cmpint(fe.last_event, !=3D, CHR_EVENT_BREAK); + qmp_chardev_send_break("label-foo", NULL); + g_assert_cmpint(fe.last_event, !=3D, CHR_EVENT_BREAK); + qmp_chardev_send_break("label-file", NULL); + g_assert_cmpint(fe.last_event, =3D=3D, CHR_EVENT_BREAK); + + main_loop(); + + close(fd); + + g_assert_cmpint(fe.read_count, =3D=3D, 8); + g_assert_cmpstr(fe.read_buf, =3D=3D, "fifo-in"); + + qemu_chr_fe_deinit(&be, true); + + g_unlink(fifo); + g_free(fifo); + g_unlink(out); + g_free(out); + g_rmdir(tmp_path); + g_free(tmp_path); +} +#endif + +static void char_file_test_internal(Chardev *ext_chr, const char *filepath) +{ + char *tmp_path =3D g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); + char *out; Chardev *chr; + char *contents =3D NULL; + ChardevFile file =3D {}; + ChardevBackend backend =3D { .type =3D CHARDEV_BACKEND_KIND_FILE, + .u.file.data =3D &file }; gsize length; int ret; =20 - chr =3D qemu_chardev_new(NULL, TYPE_CHARDEV_FILE, &backend, - &error_abort); + if (ext_chr) { + chr =3D ext_chr; + out =3D g_strdup(filepath); + file.out =3D out; + } else { + out =3D g_build_filename(tmp_path, "out", NULL); + file.out =3D out; + chr =3D qemu_chardev_new(NULL, TYPE_CHARDEV_FILE, &backend, + &error_abort); + } ret =3D qemu_chr_write_all(chr, (uint8_t *)"hello!", 6); g_assert_cmpint(ret, =3D=3D, 6); - object_unref(OBJECT(chr)); =20 ret =3D g_file_get_contents(out, &contents, &length, NULL); g_assert(ret =3D=3D TRUE); g_assert_cmpint(length, =3D=3D, 6); g_assert(strncmp(contents, "hello!", 6) =3D=3D 0); - g_free(contents); - -#ifndef _WIN32 - { - CharBackend be; - FeHandler fe =3D { 0, }; - char *fifo =3D g_build_filename(tmp_path, "fifo", NULL); - int fd; - - if (mkfifo(fifo, 0600) < 0) { - abort(); - } - - fd =3D open(fifo, O_RDWR); - ret =3D write(fd, "fifo-in", 8); - g_assert_cmpint(ret, =3D=3D, 8); - - file.in =3D fifo; - file.has_in =3D true; - chr =3D qemu_chardev_new("label-file", TYPE_CHARDEV_FILE, &backend, - &error_abort); =20 - qemu_chr_fe_init(&be, chr, &error_abort); - qemu_chr_fe_set_handlers(&be, - fe_can_read, - fe_read, - fe_event, - NULL, - &fe, NULL, true); - - g_assert_cmpint(fe.last_event, !=3D, CHR_EVENT_BREAK); - qmp_chardev_send_break("label-foo", NULL); - g_assert_cmpint(fe.last_event, !=3D, CHR_EVENT_BREAK); - qmp_chardev_send_break("label-file", NULL); - g_assert_cmpint(fe.last_event, =3D=3D, CHR_EVENT_BREAK); - - main_loop(); - - close(fd); - - g_assert_cmpint(fe.read_count, =3D=3D, 8); - g_assert_cmpstr(fe.read_buf, =3D=3D, "fifo-in"); - qemu_chr_fe_deinit(&be, true); - g_unlink(fifo); - g_free(fifo); + if (!ext_chr) { + object_unref(OBJECT(chr)); + g_unlink(out); } -#endif - - g_unlink(out); + g_free(contents); g_rmdir(tmp_path); g_free(tmp_path); g_free(out); } =20 +static void char_file_test(void) +{ + char_file_test_internal(NULL, NULL); +} + static void char_null_test(void) { Error *err =3D NULL; @@ -660,6 +688,9 @@ int main(int argc, char **argv) g_test_add_func("/char/pipe", char_pipe_test); #endif g_test_add_func("/char/file", char_file_test); +#ifndef _WIN32 + g_test_add_func("/char/file-fifo", char_file_fifo_test); +#endif g_test_add_func("/char/socket", char_socket_test); g_test_add_func("/char/udp", char_udp_test); #ifdef HAVE_CHARDEV_SERIAL --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499263598100441.54300992129583; Wed, 5 Jul 2017 07:06:38 -0700 (PDT) Received: from localhost ([::1]:46403 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkwn-00085L-Kf for importer@patchew.org; Wed, 05 Jul 2017 10:06:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44858) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkt4-0004nE-H7 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSkt0-0007p6-GW for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:38 -0400 Received: from mail-eopbgr40115.outbound.protection.outlook.com ([40.107.4.115]:5184 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSkt0-0007nB-7D for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:34 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=53U5Dtr7BoR5HtnVDqYtFy9SBIEjnFTrZaVFPDNef8E=; b=P7EzNT761er8COOZVHGaT6mdG6zM8ko+OaphVyxD9W8wDobMK5xBDeqRZWquF/V2lVKubb0u6WIcWMq9ZE2r7WZH9bYw4FQHCjTA6Vcx/qmeq8Rn2Z1oZ/lSnUFmIZ5i7iTMY5l3/XMRxmRsgfwcOmPTaKHBzyPlTdCFTbL1SnM= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:02:00 +0300 Message-ID: <1499263324-15184-10-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3ff2c4da-e58b-4d32-4768-08d4c3ae7b7f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:jW/8hYcz+tC/qsf+GKKZnHWqJKaNXLQak/kE/uVImnnulqEYbUCBbgkudbbXQvelNo0RYfeu+693RogVsU9kswFrj8tD3s8aUKYs/cTUboTP+SlvDc62S8rsfhc4AKeSC5uuYRQfvuaU1iDqa2tBbPkG0MhQTVK5EA8Ky60h/T1s11E53ZueFwCBVuesQDUeQnpZxSywvBSlJ/7RadjNCDAmkQBRrJuse05pqBLFtNf/kdjgrIkCs/Fit/vU9J6kC3TavLHJs9okp1OAfqBDNZtD6ZPPhSOsAYR/5LDzMkIc/t6i/39ASif9ubhpZ3qQPCpDtNQB8mxEYAh3eGXKTHUNnbzBtlEvPJg43skAvrEL/CwYuq/yjzz7mpVN5xOUOYRtvuFDV70l7HtmRA5fMj4nVV2Q69b9QT8+zgKCNeG4Jgi0O8/mDemzAP0vVrDBLBH7SgGjnznjsmTk7FlLmgZupuGcY7EJAs0KlLYKJMHXjKul7OVo47iJygyOlPrWHmczkOOcF6II+s++ypnVL8Z3Em+C/vCgc3aFMM4DHxG64qEbVeqaO36La+s6kTQ92NDvzqF+TtG2GqQ/t3atch+h32TZJEpfX3HS04jyD2WzVrRwGv9IZXJMY7nRgcTxl4nLshp0ejvUy8gdgHkM4ESGvrH8FeQqZ/6FC77nO6Vgc1NMqSx/7P9zYBOLz3eRQZgzQRhBIstnxlcTHpJZfMpkSpg4QQRoQYbfaSxuD8//cilxJA5pkkGSt6z5VyiA X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:WBidVdg7N66frCMtzfiqnWRexq5sakZxMVYoIa336XSWUI+XCOPltFqE7jwsFDDB2APp4BEQTZvZYVCJSBKdBzoUuHisBjFbgSCND4TY1eJ63qVkifXxZOXgdQ1BEHGJ8GPJvRogz2IEY59grGqa8+oXKNlrkqLGPDGULTKv4VIQBd+8MQhGtrr1O3ranOIvaJEKkHKCYSXkPr3LbQWMiRqomYkxx07lc7ySpVOJnq0Vswfyres6ltPLjFuTdcEU9d0riPhQ3CmAfHOzq9SAAvTyWAdgGBA5RQm2B//uLAfe0IMGdZdL1wk6g8PgcWhcqDY8GB9tlmBy/42xJ+1Ta47redykkOGIiBlTuXjzCckMpZaCch7NWkjtDYeRgRHEgl/9u19OypktA3lPUN/oczLUbIOiUCTF7fxj8e5+ue3ilONMKBxZpPe29j69DNsc9SI+rWtEFsyoievJb1qjlRu4IKucdVMOrPriGj4C0AvfsbbuLE3p+gtm1xkZHMmbSvV9Fk/TM4UlsOnpSzqjWxTXmAA8GqqtUpGCXCpuXdGNMW0Nevb9/5X+U8i1bWjoAYKG5lD03bkcQvr1cZOyhmaWHUlaUYRwF15oslHZrf8mErtk+LCEAgULPlgdsaIFouWOu4dkI+POhCablqmk8pUmr5hO4w1Q/WaM4GKJTQUEEbvq4SQVK1dkvtJ7Kz82zI+58AOr9RNFLf3tLPh+iOPT+cQnCpOeQ5HHYcE5z1IZ5wqySwTfXZ8o8Z9FSoHITpQ46JirpF7z3HqdA55eIOAlfPvnXQ5kySkgYfHJqt/36aRfhPUS/2PxBvcKvnGXHwPHknSDeS8rEEiKsO9ntiaqVgPmIBgA3RmTaWKzUuLz5hJglxT1pFAW7PF0U71uIqoAzAd0Pq9wQ4SQNw2w3DVB1SQzfhMktk6tQwl301Y= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:5kgyQPqqyv/p3uGqYIOX6ApvaiBm00RTAMmYdMdN+JhZLGbljdKx8FpGPgAkCA29qJ9hKAr8JZW4cGM6S0bcJ0eJnR0tDxLXp039IL9W1zfjjcnaDos8hMQVWBYCLs++L1f+3xbRaKxx8OF+UVyNWaJe3bSepwCeLwR+kiBX7NH8SKFYGPbguK85UDMaFK9Durbsys7MpZK3W9uvtSidb4G8jUKw/ytfGgWZ0kiAEmm45FktOWyckOisaeBJF0peCVsNKBc/ZXSaXX1gNEIGbh2O+FU0sbYlj9sjAvoyYT+YPrG70IFAWSeWQyJMK4VBGW+ur8Kv4v31aWBwC6Q75WJhQ0coUo0gqphSW00w0vXw21CQmJswSZ5Zx//lAMMQ/k4G26dEZ5WR0F9kURgmazTZPm/EbpTdbLaP1T34nbVJrvXaF3Cg3UfEdmYs4s4wUafqny2xa5P0bPxhZMNDEfIN+b3U2evoUmeMjo6m2uYrjlrJViHjRdx0jjH8Z9QOVBvWCBFbzoCj82HSWs43GOXF+l6jCWr7FG9+ZK/5Ur9OaNgvCpLSEpm15+IBCa2Teq/u1l/ErikTE7a7dGjf7cLtMZGpMuYdv9nLium/zecH12+7ZX9FJiKgl1J2jS+6zME3XGe5ILnDLDJyAfI4rmwxyKTA6GJNZQHinkyGwO8= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:S1yGV7wiWo9892QmR0prGYr59o5T2kCIf2Hf+XfxBaMf4FzOTUd/k0JDaU9arQ0O0KxFLHJ0zlVj2tRJXHLg2Q0CWud0WIxIXJbuuMruQDDCKgtYDPEiG2swli4we/R25zQfOcqJ3b6rokzRVaw9OKKReUJCckvLyP+j7GUj9N2RFmpCcJ63cTcqTc4sgym3FQaT1Cz2su4qO8ZCFGTQlBWBmMlluXARud+ayzB/2pWTMZvzOSVpAofcKC6jAfyFQuA3rLZ6lZNdVpIPmYVOEx7iFB9+DIEEMm3sMBgQHPCs1lVw/Yu4XS3/8UOuuFuPVgmsR/97k6Q68KEzKV8Zo3TXWUF+mXme8V4UwS6lRfHD7enVMnFQ8Gh+RZkJUNBtZrMAeruVHiRM0LQ/HKfFrbug+oqePppoFnsEMg2Gczk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:k1U+n96xBKjyG32/40RNmfbKYd4y9QZWIAoB/xsw?= =?us-ascii?Q?REDPUF38iUi/rMRwXZxGKzDiN+fS2EO8ur295NvZYpLhJgKAZfPmoDoc7SuU?= =?us-ascii?Q?iKZNmr3kJ/Ik1Cr0UPW5T1NYLQeIhF24l2t1Z10Jz+qKoPlTjJzyB5Y7LGB2?= =?us-ascii?Q?zqDInhEAcrfWizbuw7J0uCpQ/NmWTamg2Uwo0kAQNGz2mS2vsQvrE8dYIVuI?= =?us-ascii?Q?gsGE8uYjwg7RsFXosTavqcHd6UGV7w44DYk4Qp4ccnv/TlMa/djS9+fnj/6P?= =?us-ascii?Q?ibNl7oajxsr83XUG3MhH9KdD93gD2iRnrNHoFhdrsAIIOurh0m0zbudASmax?= =?us-ascii?Q?WjtRSeh7Cw1lki8xi+Skciuj4W5mb9x2mQF1mMz4+fTVNEXB8Q6yao0pGCN5?= =?us-ascii?Q?xFm6mPA/hvKzYRyWVgtNgt2/TntaECqN3PDAddvY5+Fsc3JYhIThKoEcm9gJ?= =?us-ascii?Q?KeebN0TzMAweYvrwssLDbSSV2qZOkKa8c8fOis6gI4NbAE4Y6ZA5YepjiLjf?= =?us-ascii?Q?NDWug9fU2DaBYya1fwilo+yaa0Gf3zmqmh2uq5HvTaWwuvGEmQSS+2jeBve3?= =?us-ascii?Q?Hj45FTChvQjeUPYe643/dvKBUwVFVNVZq6tNcfz/VERz/9hWlvDRHjZT6VBr?= =?us-ascii?Q?X8li6qudIHvJreQw4f5JYEL+6hm30zyQmVMb3kkhkTldUaeKb9j2PryFa98b?= =?us-ascii?Q?DD8ePMUu6Gq7aTF3eefWbRmBxI7/guUH1XMEqpwbGklajrNWp59y9nx9IOVn?= =?us-ascii?Q?QijdxbsDj7FsafRubF+Lhr5FyHeDOSCM9torrEEu2nnqO9ha4e7dZiKQC9Y0?= =?us-ascii?Q?7lKl0pvQdxdxOZxZeLBXlfo/YzAnhLdfTGNmydJZXNTOLiOWOAgTYdb+AOIt?= =?us-ascii?Q?qa3BHNicyOmoRMALIN3VlXzM73aXaiTmtlS8yJnCvu94CRhYHTKz3Svec0yo?= =?us-ascii?Q?pUygZjUYrlKwPGCKUqVDgdPSdFSNQJsCIrj5Lh2/D+YCMMliCMRt6xK+rzLq?= =?us-ascii?Q?x1DNB0H1Iwu4bC2ZbDLziR8Hvg/sC3X+GTY0l6puUKhKpTMu09aiCo7Hnt+v?= =?us-ascii?Q?aiKenhH5sdbp3xKXPDZs3bD5M0CwKhQt2R0cYDGvUvuGC5LFha0wnGKIHJBZ?= =?us-ascii?Q?FFB9+Ag+I3oJaWfeX3xTkk9cNDsX30WaYILV9Fvn1Yiw1Ifm/O88LzUwlVgk?= =?us-ascii?Q?3HaLv2Ib9l3pT6Y=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(2870700001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(23676002)(7736002)(6916009)(47776003)(305945005)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:VD4ts3J7xKSfNP3GeHi/AV6VBpaV4nwT+hTAWU0?= =?us-ascii?Q?6CpGCnGz+abpG8gYPdjKwTMhXhnYkqSsQKpqURSzbHHgZo5kW+uYqtACclGR?= =?us-ascii?Q?PMi/PlQhQZFyh70Sj/m2rpjn1yZ7ME8VS2NNMwUuhYoZyaj4UWBsNTcKjMjJ?= =?us-ascii?Q?4E4wMJSSGxVy4CWN7++BL9/VE4a8vFhHY59wrvxQPIT9+6Np/0Fx69IIrrg0?= =?us-ascii?Q?7EdPrIJElyOppe1ydJepnvkxpPpf3Lvx6vHFLX8Ynz+1DYpNos5LtJ58Viqb?= =?us-ascii?Q?IKbFAZukDopJZgJx4MOcl/q4JVD0pLV2AtanGck4RwYIO5PHVH7X7Q5yvans?= =?us-ascii?Q?wyO5Qm3kJNOPibhTlz4Kzt83yQ4U1bJBW6xW57rBGjmfWSyY7cMe1kYfWtEJ?= =?us-ascii?Q?gTNikPb+HCY4WV7ws7gw09OeaHnqXGANDY16ZhGEXzY+ylSfoaG7S5sFq9DY?= =?us-ascii?Q?V1av3nIFPlCKekwwj5E8kl1Ksad1BOMaGyoztMDSEceYjxS7HoRkz1jgBcg4?= =?us-ascii?Q?D1SZUyLEoNJfZasytL237PB/vjCEy2mI2HQvEULJfYuqp7ljnoWNRyPT/AZ/?= =?us-ascii?Q?CM8G5kNBu2HBgQhMkI39E2J5AZGcn35a3RHaVDifyCa13eJHt8873HH7kWG/?= =?us-ascii?Q?jJ0BwWY9coeMOnpSF/X2qfc1RGNBqYmio8LHMCtM4+nynR1niBE/+dgkG6RS?= =?us-ascii?Q?Seqt/jgZOjFdbacVv5AhEmgKa1YdjVc6VpG24vLizcjIYm+GrQUu+uUCOtA+?= =?us-ascii?Q?DkoH0Gp7OBFpwsIp7Z05TC7G/mGaxR34EAiC6AiED/BrGmsJY0J9JDw8TP5P?= =?us-ascii?Q?OCfcfVZ3xjwmgf/SilQaYpwT3edIZ89sX5KKn/vQDmgBiTFrJqzjjAYDY6wQ?= =?us-ascii?Q?B5d12ZOxnNEOzMSFWC3C9SRze/p4atblYSAqdi/OjxJdev4t7FZwE/Qc840c?= =?us-ascii?Q?BPcEfwlT7xvC4vNgKjaMOWYkf8v8dnMP5QtJ9bvA4zSUx05YSIqCoFwFUqcB?= =?us-ascii?Q?qpWhSBo+YBVygzbn8F0jyddpkX5rNaerWUt2oZ+3DydAf1ZVA7Ic8PokPikO?= =?us-ascii?Q?SjsSJZJyaoD8At3G60fvCcg0HP/GB?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:zUIdU/wiFbJPtrGtxQuK/1llkjKBITPLGlOirPfP?= =?us-ascii?Q?Uku1SXTPpbC36/y4jeOVNIyBVLruT/u0ibBHfZsZO9C05mwuEh8MprX/RVko?= =?us-ascii?Q?Y4vApTavbfNZ28Q9QfKRYPM41y4ieZjmP/yVXsw8fhjofhj+KYp4GGYdspZt?= =?us-ascii?Q?FDaKK0Afu8Hubfl5d0gHUVf65RQlrHBGirTNcd45P56OnevEeyse/Dm0/qWM?= =?us-ascii?Q?cxTZWyC04QU8uPL2mCKvTeVkpW2nXMcPkElzDm2ikkzf56SKrDDGeaZkWxkj?= =?us-ascii?Q?mAMz708KIUr4pUG2KGTt2gjidmnnCyVyVGHTMunVs8QnGZ2ib03gQFzjFm9z?= =?us-ascii?Q?Vq64W1xW8HXbzlPpGfREdf0CJm9wq/r8PkzAiMvquG5jQdT0hOagBeJ4QOZe?= =?us-ascii?Q?u8LDrpZ0qT1fE+wPnlsMUIrSEuNg4bztQq+CePyHCG7/x4PjabRG42qsZEla?= =?us-ascii?Q?hEzpLEFnUsSNASwSq86Jy/NHLnayLXSdwM7MP4EYmKL7pUSniwhdNIfK/aBP?= =?us-ascii?Q?ifLr8KZjTKwIZ2OvJn9C5PZLmXZXx6Xn3OmbqDnwdT24eiM+yYqZssEaIfrU?= =?us-ascii?Q?rVP6QJJetIr19y14iZVOUmprK/NFoCBIvX1AcsUqlGPfskou0O8AVkTEKMro?= =?us-ascii?Q?LKYEUBFBPjgJI7/cZEDMCtjLVoQhS5MfsGycv6ZRp6WLZeE/p/EY5fXUpeaz?= =?us-ascii?Q?Of4tSaQE4uYI6JODek0Zr899rRmb3/1z7miNsZY/qWaHdLmSxBgPRBp/kaO/?= =?us-ascii?Q?QLQESD8h551/2zLoSSJLYEQ0gJM+TPW9HTO27ND3OjSP+zfzZIxqQN+jV8JD?= =?us-ascii?Q?ay/+1DCfFq6/1dkVSEPondtFQjuL9znEDNK13N3f42HJ/xH9z/h8ewxY2UDe?= =?us-ascii?Q?OwCtv+JT70bladNfh9ON0yLKIF0qPfkj/KpTWrjsFqaWIxFIPdbaFv82dKLv?= =?us-ascii?Q?cLS5y65gP0adojYhdfGVknEIzHf3YPMua6iRAQKza9v50DitBvAagkBCY35o?= =?us-ascii?Q?cjU=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:g9QJX2zyM0N3OYp+9zaseTD/q6Iue0vGu0HNS57a8OIyXJs9j0fVVOdDRS9QdDZmIikxDHoewPur/bFVKFLsEJHmzJ6wNyNlu5268sKMdPL3iWSpEkG1gQOwplmOvE/XtX9GG0uwLIc86u4l6ZI2YZuVYK6nM1QdheiPnQRQO8O7kYIk3m/UsyupZJLJtcGEtMvFduvcxN+c5cgFRAzz6DLjzSk72E1+U7Q4kYzTRzWgiqb0XLc4IvT7ceQDSmqhXiqp3gdYybvyf6eyHEAeDk3Cjh2vwKPUt4E6CIAtr0YTIp8lo2t3DPPre3aw8qI7JiA6lNtQ41/ngZFDJgi4USag/xqGZQbLtrESf9YioHQ8GW4obkw4agoEQOa2LDGfG6C+L6YdHBqWKpLqzJaoQ5C9kUQLBCw4ugFVAkM8HLE/JgYvoBY56YZ9OMIgooxCrCDY/WTLz5+gd4kOgS68qoJmeRsC/H3iyXuLI3FdykqIwif4ri1iFyxxz9+qx0jW; 24:0sQ4TGkluRVDOteE3m1rk4UIZJtQtT9ie6Z6zHqRPE/II8zsJJYmbUtKb+S6h0KkxbIM62VpwsL+QTrIFLl1jMFDLUtILgT+I1pMlOav3jU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:aPj8AWmgGyJlX1Z7ULcyrUFSdwbJz2g2BAWiPM6NpNBCZ2llPxwltjTcvmgRQrsrQyB0iHK80Lg7pWVYvhBLFG+Zk+3E9UabxVZhbzylraQfexDSGqkx7X+UAEIglV4MtqQUZGAiQrWbLGLYPLLnxZVhGJ3tdhFHCHgFkVk1XmQN6yKx6tDKYh+6g7wDEUr6+x0N6QZ1OgTTRJYLbNQxTC7f0Jo5kJ37+Ay7DhnT+1uptNKm4saMIpdbfShEY9/LTQDmQcJFCO53q+c0sWL57CPchEiaQgk5BFPwQMR3HImjsrLCRFynZTycLv/jIYo4uN38pvqv28hf0IJzEHFQT6FplFgdSY810ZC50XlZCpU/Fq3lM0M4a8SNefbgjFNDJTfkcpVwMcxG6b/zQXuODBZA7tziE0hPtyV2fd10+tujqw9UFJomkFs/4nYEYjTkFvVat0JOet0+6UjntsYMMNmPFdJ97m/EKvfJJTiitbhZTJ841SH97nSIm/Qcxc9MVow2jYx39YDYBad3k4mBmULlj78t5z5/f275jQ8T7zod6ubmN7bqIH5GBS4klsOsnLHx1G8sl4d36o9ohnnTQNXzShnlna/rF9vxpHeB51CP2qO5SsBJDKkL/sYnqHLi8ix7aXXGLHJ7S7E5KfcZYzOQtGwlOFBHCprYGGR9poxLxvMt8X5TlnBiWM7O0W0MlVCAxzHxHan7PNKYGVqZ2FUA7nNYfKml2RSd1nnlv9aIsCOqWubvV9h8q8I/OHh0KtmZqpYRKyTslUOFrogQ9X6pbOdkjlNQWpXqmvPnooE= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:dCw0ydllJStDn/KnAaZqw+U8e7oYDUl8uHtvSyJkMslQ5oYuyDowaVE05Ir/08/ATk0zWIbYXvXA3OeLoc8Z9l4KvnTic8aXR2dtwy8Z9oLREqkS/WU651Tbx3MH3iYZa1YIGZu6A7s7UbwbFDQRh25PjO13kY87Fj4nUcWI918= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:31.7872 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.115 Subject: [Qemu-devel] [PATCH v5 09/13] test-char: add hotswap test X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Anton Nefedov Reviewed-by: Marc-Andr=C3=A9 Lureau --- tests/test-char.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 71 insertions(+) diff --git a/tests/test-char.c b/tests/test-char.c index de72974..9ca233f 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -662,6 +662,76 @@ static void char_invalid_test(void) g_assert_null(chr); } =20 +static int chardev_change(void *opaque) +{ + return 0; +} + +static int chardev_change_denied(void *opaque) +{ + return -1; +} + +static void char_hotswap_test(void) +{ + char *chr_args; + Chardev *chr; + CharBackend be; + + gchar *tmp_path =3D g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); + char *filename =3D g_build_filename(tmp_path, "file", NULL); + ChardevFile file =3D { .out =3D filename }; + ChardevBackend backend =3D { .type =3D CHARDEV_BACKEND_KIND_FILE, + .u.file.data =3D &file }; + ChardevReturn *ret; + + int port; + int sock =3D make_udp_socket(&port); + g_assert_cmpint(sock, >, 0); + + chr_args =3D g_strdup_printf("udp:127.0.0.1:%d", port); + + chr =3D qemu_chr_new("chardev", chr_args); + qemu_chr_fe_init(&be, chr, &error_abort); + + /* check that chardev operates correctly */ + char_udp_test_internal(chr, sock); + + /* set the handler that denies the hotswap */ + qemu_chr_fe_set_handlers(&be, NULL, NULL, + NULL, chardev_change_denied, NULL, NULL, true= ); + + /* now, change is denied and has to keep the old backend operating */ + ret =3D qmp_chardev_change("chardev", &backend, NULL); + g_assert(!ret); + g_assert(be.chr =3D=3D chr); + + char_udp_test_internal(chr, sock); + + /* now allow the change */ + qemu_chr_fe_set_handlers(&be, NULL, NULL, + NULL, chardev_change, NULL, NULL, true); + + /* has to succeed now */ + ret =3D qmp_chardev_change("chardev", &backend, &error_abort); + g_assert(be.chr !=3D chr); + + close(sock); + chr =3D be.chr; + + /* run the file chardev test */ + char_file_test_internal(chr, filename); + + object_unparent(OBJECT(chr)); + + qapi_free_ChardevReturn(ret); + g_unlink(filename); + g_free(filename); + g_rmdir(tmp_path); + g_free(tmp_path); + g_free(chr_args); +} + int main(int argc, char **argv) { qemu_init_main_loop(&error_abort); @@ -696,6 +766,7 @@ int main(int argc, char **argv) #ifdef HAVE_CHARDEV_SERIAL g_test_add_func("/char/serial", char_serial_test); #endif + g_test_add_func("/char/hotswap", char_hotswap_test); =20 return g_test_run(); } --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499264360705455.07064000519085; Wed, 5 Jul 2017 07:19:20 -0700 (PDT) Received: from localhost ([::1]:46465 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSl9A-0002ur-72 for importer@patchew.org; Wed, 05 Jul 2017 10:19:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44921) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkt7-0004qc-L0 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSkt3-0007rd-OD for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:41 -0400 Received: from mail-eopbgr30096.outbound.protection.outlook.com ([40.107.3.96]:45373 helo=EUR03-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSkt3-0007qA-93 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:37 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=aSKHBo6Vi07q5pRppX+SBdLbcE+XABH4NEK7H+oczkY=; b=ITNza38iCDgJryHa1Wudrk+EJaQNd73zfWtHWfrnQ5HuO0dKp292cRpLhvCq2alz2veJKN4XZmszIhkD1sDOMnjYAvnIdbq3hzRJ3Fp6k6Xkiaa/x5ZFsLNnoQCsIGcjRFdEwnMLCyZ/t0REMjhD2zmy6CqiTAmcjraS4hGVGsw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:02:01 +0300 Message-Id: <1499263324-15184-11-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dcb1b188-3cad-4506-8b6a-08d4c3ae7c85 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:XjudskmzICQx1tvhFaw2rcTd9NZOI3NHjxP3LeF3uZ6q2R8nZdM2e10ZtLU8S7DW6N6ydAtbRFWBZdkAiGeRHeZ4C4HF7IxtQz3Sl5/AHnKqYm/VZI8KaN+8i84ItwSDj1MJVE3bjVk/0thAbY+NkDyTb5twJ8SrVJbqgzHrpOd27nuxLJwQRXsZyjv0mBymBZ1i+M7NMfb1MpEoWAn0m3pgVHheGWEAcVN69sshFRN3i1w77RRvfeolndOAlDHeo3/6ErWhjQgeUjII508xsBiOMEWipsZo1wP6p5u58HA23GKA2t45D23GNl7Z1KhNvMIbCaDZ/08NXhc9r62QqU1CL0yHuoE/FE6AzVqEhImMTy5o+zYmE0OnZBt4agIfliVHWWBKsHIIqEGUzS92nV+t4KqBasTl/jTslMryX8w3dj2N5Q69S6A9ovpUFvurIulIWLhwII7rGXQJRu1WkVGPvkLbwg+hXgGa98wrzzQOzVNu3Y1RZw0yd8cgWEkT+wOQXDo1kUSlaVXC22amk+5ewA60LVp8Ngid5pq6r3x+2uhAsu4frALYfRIZMiujivJpFeQAQog2kGXufH5jHA8Lj0F9OHH7AnHWOBDgTaaG64tluUTHc7vqPo9wV5H3VwTPmijxxrTXyjJAstNVl3cqOUPAogkD13vAxjeFg7uZpThMaPrimP53K6RE4d/8k28ePwO5kfVb8Qw6R+oKvdqnWQcABwSxQehPNRBxaYc9h9BbljdheqAjYmNj0o+W X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:vDahDJuZLSRarXYyeKD3O+T/xqkqyOvhu42WbnPKHaYhqUPkbhTIlGs4LPyBbnVv97oF5NCSZdYrkfMyzhYaeK7MvshtykTkHcLhCIzOW3vJy/sch1FXramlARZP9fJKl41ZGsWWVwhKNQRFOiBsALJRlS+yRjef9c72fSFoZQhuIFYboUiEz2VL5EYPaEdUdHew6j07DMBGdBZc7IbEi2FGf1Y1I0dwF2y5V1iluZcHRh3I8oMj/kGs1YLxz6qGPsVGxqiNiR9WncJ8E3OQbKiUQ/kcx91ALVZmlBeswPWUMJJWhAt1/Ns2chzF2c512NtOzkn0NE3MH7L+L9CAVVD85jMKnbToKiB9ZRnmOwMNy/wwMx7mck0yge/+shhVF3cIPmvE/0OYJo1vKtWtg2NLkRX7au0bsBXVwLF0But70ToZP7TA42nrcM+MIXZUjM4M2aXkAd0K6E/Bvx2ZYLWigCawkT415TSApDIXbIdcx3ZvbXzmfHe83UrrJ22CggJQ3F0DK3NekeytKU6RET0alIZkWmQgVLkPNy98A101KTyUUtvpBdik5yLGmewYs8Q206zET7ocoj5VJam+2sbF3iOzRGATx295bxApZEZ8++10sruOmhTIDU7eGN7nOmm+I/Plo12pZU6GjeD8HT/G1WBaK7o4WUuFMtZrutC4hgma9yEjR+gXe57YOdJYpQeDvV8yhZuAbXqlL0dN0PNY02MvYOR4NVNlhjGz6SE2/7WVWmt227+TbWN113Cq+nRnK92XV4U3bqAOnxqGA3DOzCv7EjNCWYghC9nan/TTlLjYYFDWOHkbvJ+mlbUEIEhl3PoQ82OB3mH8ETbnCcGl9UYhWx4CW724Al742K/uSnZiB2Mf2ZJm8tv+r8IRizPoTqgQ9rSPo7EYcMrnIaFKYib1cgL70q8sc9orwrI= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:inZnKb4/FFLvSrtI+ugnPIHZysxCxes4ZZAQEZpxEg52ch1432cFVaZ215RhMJhV0zPijH1OwhkBjdLx+I+IQA/dphOKh7LKKINiHTpM1HLKLJNiM+BffkQ0jmkADExS1MsMmTc1vWyRhymQxoAfjHDJELdPqK3Qqe2VQYHhK6sW5JYGciQDbZ/ZB8+k/9WSbaGtnuAJ6GnGdo6bFeSqPQKJoTaHakfZvZpbT8dS3yLOSxwoh0i5KJs85gGfSKv4xHKusoOf0xapagXGBHPAE0qZGEmGOovZs7omM3OIwl0Ae8ml/lzzDblsuO/EN8Iv+vCRMqF9Tyn3nNfp5/RKNqBFYQ8QkfukZ8Xr+BA7xQjZu15vnBZRXJHdBZJhP+zvXUt/36NTHDIgTvkXC55IwribrOVxqmaHxjWxpwD3ko16VLNb1mkhBWEncCCpnS3zuQ6/7aqNE/yODJC797bX7h3irf4b1hlJfI531qonYilUX+CM/ErAxRy7cAHk3ys67IjsfmD35hb00de0D9cB6iMyYM+oijCUmD3KFoAjM/3hAdkpOelSU7VOAEobPCjNQ7vx73qRYwfmVVX9tJdUpcJrtgxn0vdq4sxWkUTCMi/4qSEh0T5RpPwh51BBrsH9O6t5vXrImjInECWdC796j/h5JUVvJDHN12MZrDuvHSM= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:tNWv+5lS7FE8lodE1UbWKz1tXy4ZbKcI5r9b8Wc3IO5d8Wuug4defl3XE8DuobIl+wyNdujyoSCogXdTEkbS+vS2mQoENSYqql0GZ3mtk8Hb8qakd//zYjXY88bqiCEFTwaaTDLVuB3rIZjNXr0iiJ8ely+DQJgVmlsCIUDjbfY6fySKsb25r5YTeWe0C9Xdqs1RhHZXrKctHDewBV5bw8h9hP3T2D3PQA7/nZvtU0WAKfYKJj655JYH8XzrBXbHRH4xvTCvWy0OMXvMUZqpxTmsCwWreBw5pTV2SGWSEI0AfB3zrUoZ7A3OUUKnqNIF0r6Tu+04iINcS4TFfB+pqB8FLa2Y5MZJalTYsf/m+iDCPX6jhmQSVZMGLurUaOK3RH/GTjkMcScsi67gegWV1W5gvlzEddNIDA9tFayEE4Y= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(148574349560750); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:yw66GrWRSBtBEEephtP8buuVQW9uL/OP/t39yb1x?= =?us-ascii?Q?td0u62M6ST8UnLoGn/FQ/70Ti2eMm3ZD8LFKDlTak4UPldlaYaPOEuAVpDt5?= =?us-ascii?Q?s48YSC8M2QB10Cp1JOts6Acf6rm0gRKLER4HWg8X6zRggMkbyADp7JHZfwr0?= =?us-ascii?Q?htBkkPCqjbVJ2BbR9lYmiBe406ucl392OoGpVg553vTCMXRtdWOaIwMoGk+s?= =?us-ascii?Q?2WF7RUIx9kFmRQZfaNeZ2ZF6FjeeSML6/J+XTwBTcBvykb8RqnCawcNrXRAM?= =?us-ascii?Q?iFXU3BNl8xm12YF6SXf/HKffW4VhCsA898bqhL64G6CRF5gEIqjyhK1p7vmC?= =?us-ascii?Q?Ftu2i9UHxcEFLotRabZYei8X88/zszjFyhjYrgy+a6dHEXC8uZYRwMlgg+3R?= =?us-ascii?Q?QKUCQwC8+IRSYzwVjynji6EZjGsCTbtiN/idSPzkNGhqekLs9rGBod6JPMXR?= =?us-ascii?Q?6qzZnJubQ5KLSrTNCayd2D74oKwToP18/t4NCf598nnzmNvXuJvWHIkTtZvz?= =?us-ascii?Q?Q6AgLl1dmj1M6sNJW6L4qAhabPWQhGf7wo9gBAVHkYuSIGudsdtmdI60Rj01?= =?us-ascii?Q?lp5R4yPkprf/R3J6Tt3op2ZRElN6RA6CvH3/rv4vlOlukJIOOvzVXzhU7iCY?= =?us-ascii?Q?VXDoBHznfhq8Yy1lfDvx32IBQcgrB51Y8Xk7ZyjL/gyeNNq7HW4QhgZYnCdq?= =?us-ascii?Q?R3svoBNtrDF4qRvsqz7sAzIidCqvv+wroYc8HkiQ9HTTVHFAcYB2qys7JLn2?= =?us-ascii?Q?bzYCMr04QR/A1mKFAJYyu+04xyF8Wt+AoWYSfMK0sehJEcDGrHrHj1OD9eMa?= =?us-ascii?Q?AcRwhA9oAaqW3pQ0AwojrGRjLYWPrOiEw1eMK2qycIZ692Y20DnQcxZ91hz0?= =?us-ascii?Q?Mi8jvwZXYIz5mnfZVZkH1QE12HDhWrM5qdIVbCjn29FhEENgC1nOX+lNIXEr?= =?us-ascii?Q?wXS3sxnCcnL1A7BAVMKkwhg6C3KXPkW/Johimd6IWoKTtgPKoyjsU8FTMIWh?= =?us-ascii?Q?adSNnlBC7wZ1XvdaSN8V0EoUD3YalUMwREosVGr0awCzgNsPCgw0QhJzOr0U?= =?us-ascii?Q?7ZvozoWFfCFgKPWeG1urscmouCgETZ2vhnoTT6pfKTZFEAtmdNzqAdt3iQWI?= =?us-ascii?Q?WCiCxkyhuIk+oaa4+G00CSzDJ0gJKfTvZljgaPT6KB7wMRXBStsfqtIfcQNS?= =?us-ascii?Q?KjAzaALl1wil97k32eh3SPwX3p2bSQCF2LIcJS9YgVAJcOEzLRX40L17Ng?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(979002)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(575784001)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(5003940100001)(54906002)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(7736002)(6916009)(48376002)(47776003)(305945005)(230783001)(53416004)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:3xBbbRch3WKLxfrjbsE1c9uoqnOp3gGhJbApsou?= =?us-ascii?Q?yrOBivhGm1bodQ4XCZS9SBe5RQBJJz2fbLQN335caozh5S4yIs6Ok6dXUNNl?= =?us-ascii?Q?Slejb1DqRrrNAdR+nSt0dHyTEmhP0Udrcd+w4ngTAgg5V75hMLiOTRX6loSQ?= =?us-ascii?Q?3ky6qaEBZzv8EVHmz6FVXywLTxjyVOOZ6OJzFfR0YmtDme1wzv0Q+M299veT?= =?us-ascii?Q?lQDKXq+hyoFb7kEEN7JDsJ48cb9rI+39Mjckg4dWA+9nQUoOJu1k8cIzTA8u?= =?us-ascii?Q?XxqnuFfhyooL72dBgUjjpiu0aHDFIGsZK2ICN3jcm92vqmr431A3nWlHislV?= =?us-ascii?Q?LVUEyGlPPikQpjUD/8rpCfgp6zvbkys1MDA0h/lWjTbozMCtGVk0tRyUHFUO?= =?us-ascii?Q?ZdpWxZgPYxprupXa75cBAF9hWrv/iUsVuruhSuFj30gG84peabupov6UaDQm?= =?us-ascii?Q?VrWukK1Gi2q8/AFE5d6HNoL99F/ckBCc6HuchbpWtFno7ZGnmIeO1hRMSPnP?= =?us-ascii?Q?DX6+n8P2lszfdss5tAFuBim3SExQLgxP0q421MivgzNHCSQr3oSpV576K2V4?= =?us-ascii?Q?zae3AbyHLZKCEitKUz3yMxTfr/r0DwY5Zfsgh8ELrDsg4y6zLUXu+8sxtVpH?= =?us-ascii?Q?DXQPXUZDDWSjNHergQKIE1URLYNFisZOvp0u85m0MQwZ+xS3aOaKhiO6CUW0?= =?us-ascii?Q?XRqBrvkk57TDhHfwacAmSq81rpVPA+KKN5CWPu43EfkpE7Q5kioHR1eoha0d?= =?us-ascii?Q?pHSHS/F4tv8nsW1a2X1rG8h2pzJNEx+mXl07udy9kh9jVK/K30tRNDdf0CKb?= =?us-ascii?Q?kY9BlLB2zhjUJoC3LnITgm4lt0mNZ6V5KR/nmN2Bl9lqBLSPVCxFXBciHo7C?= =?us-ascii?Q?DkoDMBZawdMQZ/NItzA7iCdoUa+AJjRSJXupEQTt/juela/yaJjWv3HzgFAd?= =?us-ascii?Q?1acpm59lXdmMjMUfR/kV+zDyA6Q1gPu2xyJzLYUptqzBXf2OkFLNoIsa8mda?= =?us-ascii?Q?T6D5OXsq1x8uCjQjBSL4Qui1DMuqgD15CzY7dXY+2mtOElIUooieND5mmMMn?= =?us-ascii?Q?NwEq0G76pOmcS6qqneU9tZZIKVxwtsOEAVEjSqu0CZhcl4bpnLSn96v7ezNz?= =?us-ascii?Q?Aqx5L4tFtnwvAZACwb9nOlHujHRXAIjydEBRwEZsvc1Xg/cC2n4mtvWvIMK8?= =?us-ascii?Q?fsyoyZWmlV9ZDzbropSiXIvAAMV1EWv5mi7iztCJ5LwexFe4sieoHwKVE3g?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:w1tGBdn6/4c/1dhMzR91lJJ6y86WNX6UXv5JWOkl?= =?us-ascii?Q?mEnpl8pcHyt24AXncBGnVaePoibvOyWPIGy0H/4BsFmFXxeaIyxddcx4+iZ9?= =?us-ascii?Q?Bd3SUREVbPWVgGFnxpRgTaCNv/ghei+kO9VMh0afWDGyenXK+N7SbkpBCLx9?= =?us-ascii?Q?1Uotw9X7lp0cSqzRif+Z9wtkD/50AwEs5hppU6A4mp2LuR8zBXcdbgcDsuWq?= =?us-ascii?Q?jXAXLa5/LOeUfjqYsDHcKckAoEUTW/y0a2Rw5cyIzSulVJCihN+vcP+pYKVG?= =?us-ascii?Q?biknNbScYvElDKuQXpPYP+CZ7Ny4WtHFrL71rxjOMjh2SAVJI60X8LumBkWA?= =?us-ascii?Q?fuTcuUBwkez3N4kyO1YCzAulKlPP7YCpLwMlMLW6G6YywPTZotsQIsL1xuvn?= =?us-ascii?Q?dQoNKDijGOb69evztUNRrpTiOFSy5VYpLitquqKU1ckU32OIrKF3xaLpd9m/?= =?us-ascii?Q?BYDJoPGL5HodWd8WTpBJ51C2u1nzQW9YavawNjkxDBv1nPUSOPmi13mbrMAj?= =?us-ascii?Q?UyjscpKj9uKIiUT1KsYZeInt/gnkAM2P3V4C/3pv7LZpWkSV0kjigqsk2/IV?= =?us-ascii?Q?fAlhnKt0WZyJMa4uwmLPZEbziLTtBUhylSOr4P3sq85Z3FFb914b6kgeKpIH?= =?us-ascii?Q?LwuyHOVduzlz0Gdvs1KqMX0kW5+WRIyK4tXWkhjA2pK97jht0Yug/m9i+eXy?= =?us-ascii?Q?/+1+LnvC5BF6qGGN3U/RAILXaB7jdK4prmt6LaKmP57Kreibc20sde8JwQwn?= =?us-ascii?Q?CHx/2PiIJi0LdNT3McUdFBHill2hWa5HhRJItT0O7TqecfV74SrsMipyNnwy?= =?us-ascii?Q?RO86qAPGjvUN031cmOMH5D5hCvl1tp8r+0QjFJyYA0I1Vf0knKK2/yxKmAc1?= =?us-ascii?Q?7TwXGH+CNSNlf0K+29raHii6ZZb6OdvRs/lLN+nB5YpnUa2kcS8mKP9WHj1o?= =?us-ascii?Q?cTMjzfyS6nEP0WBgs7impVc7pCUst1lBGpS+abKfTUxvgUoLQOqo6FMS6XeU?= =?us-ascii?Q?+jU=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:OE8JbKvZAf0qKiByxy1ASUoU6z7tr46iq+z/fLrq/HGCmwjlDof7xeRFqWlmbCmfU7c27cRuHoYF6gC56jJxXXw9c3BRaEJUL+2hHve8h1aL6vNkCfkrXoCM9FwrybsqilMetkuOHSE8CeWe/KqdIHbeHxZZ/4T4j9MJMtis8Ts6AHZpvNr50+d+CNnhKIuTmZoulE+jSiE6/cprGR+asGdF5ceB9389agfA5rhG3o0YBO2ZN96eXKYq2gQDfLSNj5wOHb/S2s3fbxoDszaDpj1T6KQ8wqqbmeOnbSS3bvdObPW1vr+D+mk3E4csMw6McCzeYRPEiawBOtp3ZS57YQ+HOaOOlcUkGGJ0g/eSQR++sr6lK8hwUqacsOydEriXBlpiGSImhNdv5nvJmQa61j6kE8e0mSMj0scbHX5w1QcPONk9nj/uojy+AFzSWlerAcc1ovoKaiMRrehyop9wKbGTe5bxU54nnycT8b2LS8nbSo1horyHA17N4xHlHNkD; 24:xqAfAB+B4AsYZc5FdE2FRZPJesXSQuSp2iwkmDXAJwWfYpUshr+ru1IoJ8HiA+Zx1kUa5zVCDTl75V6doR6jT91Mi5MdmRE/9SK1PSG4uaE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:3mVq0aTGR+tbyE67TesJvYKzjP81A5oF85TdLzD0iqSJOTrpuFv4sB/8GIOgyBGVT1WRCL0emAHHA1MCsbHYEAW0EkE+LuTl6BwZTclsePEMH4e1IjUpNMfT9De+RrW8lqLAnZJnqURx0Wtv9OooDcQvSVLBiEQ+wcwLOcFtxTe6qeRua8g1I5jrMvek+zCz49lSLBFgAvVyVJGGucHFNhTmcAS05Vtv23AcY3cODOUoyqFCg4NF2gKUJNlVxaJEI3ko9xPzxB2Z5O9M5aUuANSHCKCDltDnXDTeLBgtTfoNCJPyb6Ht/3LFULXNoV7Z+atnIjORsXMBu5n5NzYxRjSZx8oHy0XkTOPptmA3bbisL8Gx8C+d36VBoy4F+hYO91EqdYfLR6UjBX1Oc2/45sZMshjh9quykyulViJinWSw0kb3OGKiy+ND0LAaKzvsJpGziq/cSqGlg9+HfGG93d342I+ts8g+v9DQNQL7vMAY2lSWppDwEimC0xXqD4+KSc1u8sKLz6F3b3bs50/6C85LWBacLQ3li1fwWh4pts0+/y6Om+NuWCLQWRMn6uyy5p+SNoQ1g7+6SBAXr33MjBhSJBWltpvF6dZCZyRHkRMR8kot3tsVc9H2BSNpxqI34wPADINWkb5RbgYUBG3SqGTLHNTNuHalOvUk4igdAfbo8d0AO6+rW5V0p5K+BSUqKD6spXzVe9JK7MRadSO3144lSoneM8dv0QTpPP2yWffvTa3MQdaCCMrpincUjdUFzG8zcofZeiavgZ0EjhlSz0YJwYKPv7l2EbR9RvEMsNg= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:PYasqBLtRy6uxYFr6ymkxPDwKjSt7TtRuq0qWCsUJ4gXUWdHwxr2EHezMzBiUpGCFAvCruhJvkM7PQaXhIvWIZhmHDT+uzEVIhTlTrkjUymcQeDshIr8hKCcR6vd/1xCP3lnu0I6Bbr8LhdMKXtDokdm3fo1JQW6jakcaIH9dqM= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:33.3653 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.3.96 Subject: [Qemu-devel] [PATCH v5 10/13] hmp: add hmp analogue for qmp-chardev-change X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, "Dr . David Alan Gilbert" , marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy CC: Dr. David Alan Gilbert --- include/chardev/char.h | 10 ++++++++++ hmp.h | 1 + chardev/char.c | 2 +- hmp-commands.hx | 18 +++++++++++++++++- hmp.c | 34 ++++++++++++++++++++++++++++++++++ tests/test-hmp.c | 1 + 6 files changed, 64 insertions(+), 2 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index 22fd734..1604ea9 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -81,6 +81,16 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts, void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend); =20 /** + * @qemu_chr_parse_opts: + * + * Parse the options to the ChardevBackend struct. + * + * Returns: a new backend or NULL on error + */ +ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, + Error **errp); + +/** * @qemu_chr_new: * * Create a new character backend from a URI. diff --git a/hmp.h b/hmp.h index 214b261..1ff4552 100644 --- a/hmp.h +++ b/hmp.h @@ -102,6 +102,7 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *qd= ict); void hmp_nbd_server_add(Monitor *mon, const QDict *qdict); void hmp_nbd_server_stop(Monitor *mon, const QDict *qdict); void hmp_chardev_add(Monitor *mon, const QDict *qdict); +void hmp_chardev_change(Monitor *mon, const QDict *qdict); void hmp_chardev_remove(Monitor *mon, const QDict *qdict); void hmp_chardev_send_break(Monitor *mon, const QDict *qdict); void hmp_qemu_io(Monitor *mon, const QDict *qdict); diff --git a/chardev/char.c b/chardev/char.c index a7b342f..1c027d4 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -567,7 +567,7 @@ static const char *chardev_alias_translate(const char *= name) return name; } =20 -static ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Error **errp) +ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Error **errp) { Error *local_err =3D NULL; const ChardevClass *cc; diff --git a/hmp-commands.hx b/hmp-commands.hx index 275ccdf..c4c96db 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -1724,7 +1724,23 @@ ETEXI STEXI @item chardev-add args @findex chardev-add -chardev_add accepts the same parameters as the -chardev command line switc= h. +chardev-add accepts the same parameters as the -chardev command line switc= h. + +ETEXI + + { + .name =3D "chardev-change", + .args_type =3D "id:s,args:s", + .params =3D "id args", + .help =3D "change chardev", + .cmd =3D hmp_chardev_change, + }, + +STEXI +@item chardev-change args +@findex chardev-change +chardev-change accepts existing chardev @var{id} and then the same argumen= ts +as the -chardev command line switch (except for "id"). =20 ETEXI =20 diff --git a/hmp.c b/hmp.c index dee4028..1b443e1 100644 --- a/hmp.c +++ b/hmp.c @@ -2228,6 +2228,40 @@ void hmp_chardev_add(Monitor *mon, const QDict *qdic= t) hmp_handle_error(mon, &err); } =20 +void hmp_chardev_change(Monitor *mon, const QDict *qdict) +{ + const char *args =3D qdict_get_str(qdict, "args"); + const char *id; + Error *err =3D NULL; + ChardevBackend *backend =3D NULL; + ChardevReturn *ret =3D NULL; + QemuOpts *opts =3D qemu_opts_parse_noisily(qemu_find_opts("chardev"), = args, + true); + if (!opts) { + error_setg(&err, "Parsing chardev args failed"); + goto end; + } + + id =3D qdict_get_str(qdict, "id"); + if (qemu_opts_id(opts)) { + error_setg(&err, "Unexpected 'id' parameter"); + goto end; + } + + backend =3D qemu_chr_parse_opts(opts, &err); + if (!backend) { + goto end; + } + + ret =3D qmp_chardev_change(id, backend, &err); + +end: + qapi_free_ChardevReturn(ret); + qapi_free_ChardevBackend(backend); + qemu_opts_del(opts); + hmp_handle_error(mon, &err); +} + void hmp_chardev_remove(Monitor *mon, const QDict *qdict) { Error *local_err =3D NULL; diff --git a/tests/test-hmp.c b/tests/test-hmp.c index 6dfa0c3..d77b3c8 100644 --- a/tests/test-hmp.c +++ b/tests/test-hmp.c @@ -23,6 +23,7 @@ static const char *hmp_cmds[] =3D { "boot_set ndc", "chardev-add null,id=3Dtestchardev1", "chardev-send-break testchardev2", + "chardev-change testchardev1 ringbuf", "chardev-remove testchardev1", "commit all", "cpu-add 1", --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499263667324881.968483705412; Wed, 5 Jul 2017 07:07:47 -0700 (PDT) Received: from localhost ([::1]:46405 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkxu-0000WY-SF for importer@patchew.org; Wed, 05 Jul 2017 10:07:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSktE-0004wR-2a for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSkt4-0007sL-Ic for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:48 -0400 Received: from mail-eopbgr30096.outbound.protection.outlook.com ([40.107.3.96]:45373 helo=EUR03-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSkt4-0007qA-22 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:38 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=E/0J5773wSnVCShuD07auR0rluIJmOWpztaE3bHLZKk=; b=NWcWkKp6RJLZ1K2YYKTNyK4pM5DLT9WaYiRzH3BLdZP2QSOegc3U7W/2iG7p1MZRwC/UrqUFGR0STmDKvdjehen4WcA8I20XkdFbkQpSjwo4DzTligv+D0KHQ8ueEBF2Gn6m6lkzArtnRjX23OTM5ZnDozWP379WkTDFD8/UrWI= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:02:02 +0300 Message-Id: <1499263324-15184-12-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cb977ced-ca23-475b-bc7b-08d4c3ae7d78 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:Xv0YL61W7yX1Snl+eZD+lqzSmJEPSeAjL/S0Fr+VY8gUVab1F0nxlkgxZCG2kSK7yutb6k65bD4G7R4cTZ2hIr/OMW5sTZtaKZDpxhJvvmk8nlXPHcR2hSQwvLOXo/34PY+7S9pt9QMfbM3ZCDcpJMxwA5u2sKbsUIZRxtGbpdSTMx46ytXLj4sNmAvDuyFxaWnmWW7yT+n53vLXOEEtYu11pbX2owiM77QDf0U2dcemdJH9msTyWM7V4+DCejAOPrjQolZlWbiraVz4HSRc9mewOVnKYCkmo5Et4agfYiOYRrYv06Iwua2cyiE/roGP9zEh922op3l0egUU+E8niUTVnWrHV0wuSlvAd/fbtpfulEhb533Pj1TOUgoKDdixoj4gjGiaNtQ04KZfO2giW0iE1P7c9UNKV+ORfj08dXR2fDHp7du26MgoWpKaJToMnfsDDzQ92NCHn36GJdA6364jr24kGmeI8ev/xRcpIwSbyCUcGy8wy7Ukha4jsshECUTj/pCju01Pms+ZG1GMRRItXaIJ6BvU3/Cbrx/+9cWZWADFpIvxmntbRdXo2up8oiCcuqzpDXIgeZ6hHwjtpUYxvCBLWzHr34LfIBtGiKZpdu0tcmlr9CCL/Ys7IPehauiHumuXwrH4yI9gLBMIVVbrPhVXSA+G7SMVEwipTKTw54jYCUiFD7oq5OOaHxcoD2FIs9rqN0Hmj8XLN98oT0u17QfkHdx5UGshfd4f7M1a8hOCEeTuZ/eWVKOBYGcb X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:N7gxxqyezoHHzrIIRNG1fMNBO1tbz0A3BPh7C30V1FwHGSer895q0p2IcEGkv6bWjobNOzMwFIt2Fti1xGtJwtBpKhZneRBQv4MVCCElyvy0ul7blWscHc56dG3M0svLY563xVWWnaqqdip3h2Ly2lkrsv/mkNG0LHFj8NWO2oG+wZUH4Kbg5TcGgL7pLTF6AovByylcsCM8BKx8Ztq1HIVoDiw7jZo0uzNU8JWA1Ayqt4SbcSc+SOcTTMtZ5hID0kaAtkIGy4MzF+FFXvBSeI+G0XM4BDuviLXtdtz1iBhooYXYoegdW87leoOxfO66TYV3V710FetPD7mBYhcLAmFW+euIpxMj4txD0NorSfBWDPBb2ar8aXQctuJyVq0QjQydfmrIGHaL61+gBzXtjN56Z/9QWDOVYrQH7PktDJDoLC3aCDh6JJ0bA128uUuSlFbd+FW8jfK6JFEAUjRIkmBXakwDZD2uPqE+PWkZ0JJxoGAFynh8C9HqsYn82+h/b3eYw8hf+NJJzfQlOGJIxSOtG0HvWCjgOee2D/vdY/dUinQXVRwnBQZGkkY1+BP/9yF4on1940y69XXCLnaL8CADkoahyAMfCMbJ2ICY7etOl049/EHu6E3x4hZ4cpHfDfMdIj/ONQJqGiqjhnkKt3Kf5pb6o4GEh3PtDW10528Yfp9bPlx28h3mmtplUauYlkKO/Nb6+a6l7SaiSu6xECjT+7bv8dsRtawcVaG6sx/TBE88T7Waib2/VOGQuwFnlSUTXmFphxjBL3Lp+Fnk5htRQs90kkW/ZOf93eQevLAr+kVipUwpbMX5mXfsvmp6XV+H8pVTUXKZb4S7L/74aS/iSG0e/W/HN5uK1FnqrPgz5yoJPtw/tWY8M1q1xSmoA0PS2T1hrGnL3E7mlmamQVRcXp6EX/7ShExVb+YmCBU= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:mjTbZ/a0E0cD6NDLYTFRKGbZSesCO/Cvwdsa9JGDp8gJdGZIZN4pTqlE8Chwz6+hpaEbolKsp+UqCnEKiCQOKOlnilZOG914UAop8pJErLq66NEWZNtxqEOb+Y7q/H3xsoA0o1ejnetbhM8oPG2cz0C1XomeS/cCkp96HCw2+UwvkdwxU7u6qwB1i/gKpTa7yJHCfFDWhTsZZUYuA754H5aYlffSCpysxUin5bOtt4umLBaGrqxE5YYEsa9PDOm0X1tJqrW2cDljfuBEglbQy/LBajkTN/kb8wxhqyIL/y2fohRAGxw0Ty2qqgUNXfpkpWzYzpyved2C2YIDwDpvSJ2xJRqCP0C5xXZfVlZmoNUOOelA+zhjasub7vxhlCLf7rRWfvZsKy/eoV0RibBYZTKWPuc5/DpeSPC1SoYPEW/d9P72QjHWVplKNV8mMAEHffUjLfO/ABN7VE4SWgjchcrqV48kyZ72ts63DpbDbLbiEkhC12fzqNX7geBFdEDoe/zWcl+jm5oB6xzlDAh6UwW39PbpB6QP9i7i+XO8ad53N6jqcqhm5iFbLUNk5pCGvkZDF7DUdFWeEbO9FhDlVM4yziy/ibaaNDo4Jrxeg+hFz8UnX9rUyBooEWjK1p00iR9k/sQCIatKRzdlsm9LkvqigHRpo0tEtA5B+p8XwTE= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:cXRkNRjRMPknyjYB6NcZOU+M7QcDMhWxtURFqqliJc4wU1LK0IJETcqEe7FS+er8knJm5Gi+DNSACyF4pO2UuJIvGtwWeE+tZMOAkJELBuPyAx9nBoIs6n4nco2LH2yU1FdiAXmP2Cg/ZELQS1stp7UKT4bJCcg/qHDuoyBXqz9KuVaUIXrGakdzgufPvlHdsQCZpVJgnBSf3XcEd0C5ZBsUe1ByywXSxZea72KhZyMif61Bu8TT9GZShaBjXcC94Vi0bdVUoMaYG0xXXa+u813b1c4ZhJFj/uZGBF8fY8TXKkaqxYoaIUNYikhJTsTANuRlfL1NXEIQRoAPyM0VF/ph5uXCGEdTqlntNveto+INLe/+kU1BiwPXrNpHHFoFxF2PihsyWlXZKKqUHRHyjymk0dNw7YFVptWIlr0I7Mw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:zHCRDylvXpVWYMpowGC+5nnAtE+jXfIwBHh9HVTU?= =?us-ascii?Q?dlhBoWUnAlto4R1kui4pCgNUiP15yPPj5gPf+EIEY356mZB2eOcrQk8sME/B?= =?us-ascii?Q?3QJs91TMQi1UMqNImcOVm4YHfdXXT5gcao5aOrSG7UyjU4UPTfgHV38S874j?= =?us-ascii?Q?aSIlndxv1iNG4z6jFtR2dUqUrkTEdBAi31KFy03L8tZBEJOjO0PUGfKlGSSb?= =?us-ascii?Q?aISHiWngsLPdWZsg+OSn0nncDY1LmW6FgWC50Qrhb/2OHfjPuPIzfayG0aqw?= =?us-ascii?Q?660fAfmLGWpRp9sBERC63ydrweGKUSQTNFxBIbVSv6kY0NNsuXNRT3mdCtyz?= =?us-ascii?Q?NoU0EJ/2UXRL5IV/QTe673P4JyCTVdDeEqbQdHMm3pdnc4xYfkPTOcf7XhVS?= =?us-ascii?Q?MQrQDROONtd2lGk3I6FH4KGdMY4avUV4ws0/7NJZBop9cZnud9rSqk4EzEGK?= =?us-ascii?Q?YtLMorY3RW271m7jL6qeBjJ0vyIcBfErvMkLbrRTMOV4g3vp96O0WsBrHcSc?= =?us-ascii?Q?JU0ETDTIdazp7WwkvaiAH9IvVruRDGcl8pLEh+x2aI4dRRPXdO86oLvHNzb6?= =?us-ascii?Q?6Do/qoySdOKpYtUGEFbACI6lpUjp6UHkNVP+cAI1RlptZp4xhbux2NJe9cHw?= =?us-ascii?Q?u4ZT1KOlPLm7RWFYE1WluJNTcnqzdJdnBBZElNOFT8ZhGHDR0GrEMkmo8PI+?= =?us-ascii?Q?I2azV12oBmTvdsF+RRKNHUkRB3V8+9cvh/WgzrXcdLmzh/YJEriimVAyY5fw?= =?us-ascii?Q?4j5c13PikcRHnMYgbFWAT4cSbFwvzqZSzdAON03dEX7ZwpFJ27jVef8zruup?= =?us-ascii?Q?SfekYrJCephiC/CQWQJJy2G7+4oZ9eb3wx5pfZkQqnoJvaPK/BZuR6KK+Kiy?= =?us-ascii?Q?2+Ddlq1WOLNMo7+ekgdlypArh70BnT/c88+yqoEhKB6SPBonWgD6/0CmQUEu?= =?us-ascii?Q?3EiMsgDzD4itZfaP50K5ePjo0FTAYkrAcmAKv+NtY84ofyBsLSPmRms2hYYl?= =?us-ascii?Q?PCheJZoeq65hRlL/CAqsDFbV1FaxGcLByqATMpaVYvvVOUD3EsVqvyxi+CAK?= =?us-ascii?Q?f2y8zwRdjECNFo6MGI+4ZP6U16F0dJScI8JqVO3SX4nxvzgib5KiyYuvIqMx?= =?us-ascii?Q?Vzz7beJczX7Yrscmr6AyANAG2THhLtAc1Wxheb9l5bCtrI4lPh2SNKqYsD06?= =?us-ascii?Q?jPxEOLDiGJm2N2g8C3dOgn3XTj8P4gBi/U2Joav0t/HY4uv18Bz9yNDeyg?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(5003940100001)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(7736002)(6916009)(48376002)(47776003)(305945005)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:VGOv4U5+CcQu2Hn3nEOxDPnKO0ACJPe88JeQSgs?= =?us-ascii?Q?vAoyTbuX2/7JViWdZbq3rm0yMUuh+zwWXNBQ9E9G0cG7dHPMAzgleHQxcUhR?= =?us-ascii?Q?EFzgxjklWnU8UJU3Ve8eYHihpqo+4CmH9RhyeoM5Gj34wndbLMiFE0+8Nj7/?= =?us-ascii?Q?sEQ2CKhWQiHwu1MNNWc71/ylSBOeZedVUxoxqSSjb/tMf0HqPzPUEtstLbx7?= =?us-ascii?Q?dfXFe1i/sotE6QM41DRLwQKU6lgACDwGiLsLZJg95IPqel+yy4RYA1cOgaWL?= =?us-ascii?Q?hGAawW8WFclJ6CjpqQ1DaLnfsN9EM8opLcpj6N06Z8Vw+fhWnr2t3xyho0La?= =?us-ascii?Q?k+u3ugdT8Zy9Y3b+sN4cRhJF8z+HkRb3N+1Sw0LKVAqRGKwfQIYXmC1jZgfP?= =?us-ascii?Q?PF5+dFIuuEUGteMqqlROiUCmVXMfuhc2phpCcV196nDNqMPRouItrSHl65cr?= =?us-ascii?Q?XgQXl7eFlRkV49liM5st02a2aNp+FdGaZtvjpNni+0nYOgK/JxOegj5VxCes?= =?us-ascii?Q?RrYw2JmttMPWYxOqnqP1y6AcB5p9JaUiLMWGVW/BTgH/xrf82zrJu6Cq1uM2?= =?us-ascii?Q?lvKVyLQin/TEt6O7TOuciZ3ecEa66yL+voS5TupxhfZ9Po18b5kYkfKFfC5/?= =?us-ascii?Q?6QAsqjFXwDVQHw+T4V/JD3GeLfgExc9L6OqQxNx1kdCUgfQ00HNMQaG67Jwa?= =?us-ascii?Q?8w5h+v2pBHPN93gZx108uAQqHIQxeq5dVMUlsJq7syLe2Z8y2BwAG2YPBaB8?= =?us-ascii?Q?1nxffetezTaDjYMml2bzFULDJpI0GJl3QSOpVL1NUhwaXb2hf9Xb9HTyKSCy?= =?us-ascii?Q?ccIGj1z6jFQI+QLvLWt6L8PNnfv/5KmiaZX2JBLdbbOgsut9ODBZTzvfUA6P?= =?us-ascii?Q?2rGLxSBDnIPBS1bNiZMsgmcgJsQ5YJMuC/I2yaXQVfzdtLjim3uKeAFso3NC?= =?us-ascii?Q?sWSP1aBnEUXmRvBXlOSpC5GDEBdoae7h2z/zAngd4kRidFxSRwAg8bnK5MnA?= =?us-ascii?Q?OGLTMlsluEKCT6m81hkEAkIvflkxK9OHmWEBoSxXb+bef896jCPKmU/UtT3r?= =?us-ascii?Q?65KeZCbVjKqGZw0unxH7Xv2B0eIpU?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:JmCmEjXtOrJsUt+Hmr6sR4I26syxW7U2EE8Ma+YV?= =?us-ascii?Q?b+3+KUy8XqicoFfAZn+tSbAhyLutzcyDSUmmDUaeQGa9IpSB9MeNPM+hct/I?= =?us-ascii?Q?Bai4dUN77KmSy+ShOyCOcwKlaGTFm5xH4051/OEwO4CoV22v91gKLO9pQW4W?= =?us-ascii?Q?21QzDuMrPHGL34b90Y5TPUng1CriHcML+xxa5d5ipDnIvWkfATQE71cLu7db?= =?us-ascii?Q?GcoD9HqBO3P3fjIdNQEzNZ5hjYzsetav34fCDULqTNY7fGAnUJxY5D232bu0?= =?us-ascii?Q?58dQfUWq+6zic0YY3BbovbQCiwx0MSeCdAK5sSlN4kb6B1oMFYiTbkyMt/rh?= =?us-ascii?Q?ll4C5xmcYAmSSXkKVu4Ks5u2tdFnYjjudERMtsASx9h0YunFGmBZiUCnKPqz?= =?us-ascii?Q?HhbXxq/l1FsKTx0V/qYZBLArSegfMgKRSGTRABxnsbI/Ri0YhkjfVMkTMltX?= =?us-ascii?Q?+xNqQcboyyOOoUgsPHTQ11m3pILdKy6qx6EmZpdNESnarXoIdrfXiXCAK78S?= =?us-ascii?Q?Rwda7d1sdaTKm/E1yMpU2RcbXvBXj0meZvVybBprowS09eZ8ciAtobzyunTk?= =?us-ascii?Q?N5zcOnCCklj44/r/+lxtIZZDcAhtwZg0epy2fFuLAqx5bxQvh2MpatJcFMz7?= =?us-ascii?Q?gWAcMO/rueauAlV88fOOQ2E9BT92XOo2uSfQwhXQyz4Npr3YzH0X3Xq4R152?= =?us-ascii?Q?I1dpFp4D53gMtAJuYEhaUDcgYa7qstzBs3oUPdo4m6ajqmI1mKj3YL1hOqJy?= =?us-ascii?Q?28ln5gl1f4+GZLcJ77yt8kL3vW7hNdOA7VcguYj5hZaIiROsSfxqFm590EDU?= =?us-ascii?Q?76wDg/DXTJVH3p1OhS0iX8hqHKag6vlL9jZVP87yStYy6ErXu8gmNy8tYSHH?= =?us-ascii?Q?s09+1VVqFJWgNEsN/PgoymtI2i+JO/niFOJdVEUUGo/R+M0LUwF2uQ9Qiunv?= =?us-ascii?Q?f2Cik8C+NDGv3BHjG7teg2iaGZDS7rdmDmK3fkSaI6Ql40V+IifFmfULtb8w?= =?us-ascii?Q?BVA=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:dQ7tCs3fpunOkdqWlGfnCEF/nEee0oW97/+MJy8mWj0HFvttNBreQWhRe0rW1M7uUfWxmy+IP4EzdLjUNGVR6ox36qMmlMSoGOGFaRPE4BUrRuqnZ3/M8j4Zh0rruAo/a3O94g09qW1hBbhCgGRvtl60APO93xRYQ5vs4jg0JO1OwWFQXMl1qfcHj1cuwK4TDm6Xf8ygIucX4x0XAF4ueoTGM44dRfbMwkP3aOA08ox02QyWP+BFmBE1E9UD17g4P6mujl/hQHM+zB0SSDjmI+kVaZtK/phOuwf+oCTVHcHReStn2QLBz40urEB1aT4XrXJnJHuQXUjsqnvSru6k8I7Ts1KHcFr/CIRETSD7v2YK3F42GiZx3RrKPjuetuimSM2VCDi/lzk6ghJIo2vyYBLpLfolbnEAcEo50fXr9a8kpRqPt5sHhXaF2V5FVI0oY3pZcYeFXhrd4XTRhszcQejBuHWGQYZE6upi7iprWJrh6mUeST003fs/MD60SJrP; 24:KVpJG+l0T8TpPWHZw2yMvfqLWvxp79va6icCfpyAQKnjZFLM7kI4lEA/qR0S5Qk8FO2PrSCoZNOOmAxI565LMZ5QIlhmSbKNDyPvFkIXx+E= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:O5kOEN53lH5V+BNH++QizPX6DfZHHUj4rFM99P4VeO6PIlFsYwg0dfvpBzirwkaJKk9uXCo8d2UmCYM9qmF7I43uue7L7kAUvDrYHGRGGiZXKowutt2dziNPVbWGbpHey4wFTqOKFmyRIMMh8USY1hIL1z1m4ytqnWuehz/b0WlCsrwnfzUKNpTtSD358lzpc6M/KFmTZGoySP9E0ljGDt+YtqcNkuN8yJCXlJk01+1oIjyHa74YEY65+dcCfEzMWaJHlcZPayV2hXlyWBpe/mvRoyvCLMhBcaIR60YYxKCRbQKXlOOit+URkeDYLuMho9nLr8dGVGF3ZFz2KYw3BiZcKSeR1Fw/tgVuFkyPNHTBsnbH3HO+V8CYIJu+llxxGVqQ3DYEU89DM7eR+K6jC223I1hvOvs8xze2Dtz/8bMoWlhWYwahVCYDZ0vJ7/bTWJhu6ooUaU73I6IyA/IfypWkhnzthpgGF50iiLZDzdgHXg4MZXSYe9if3E7dZPFGkihZ07KKQaxp+cBvN+8XEIwq6NTMveNT32OHd7E40gzOO10KROmLhevUfIcFsdyIfiM2TuHKVtx4T1s6qeiqdk3a6m8F1BLcjXXYEmmSQRvg+N3i3BKpgtm0q4OrX36JsZC5ags6+xCCfw8Th7xZ+muVyOwqhKcm+c/Dk4eytE65QxUvPfgSU99M9uNfW4/jyyTxIxK2uhAPH5YlmTGT3BjUDudOLeHCd9dbkYdg2VQBACzRgLecZoJkxBGlUzbB3MO8BqFXc3C5Xh0g2MEn05U8EUxcfXHtuvoVr02gZXc= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:otIqDQns6/qtuQ4jPOFiuewBWgS4zQPbaXOeb5Y52yyw4KAHhl6jKfuQ3Yg8+fBnl3+RjU6NQ7Dvsrt+bGMRhyYw7Kx8sB9nJRAbQOPu9c9sLdHdO0Oc5Ag7t+/cJWSuKPJPA7kSQZ7vp36tf6EUBOrWq2c8WpArTlJ6sAJBzjU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:35.0997 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.3.96 Subject: [Qemu-devel] [PATCH v5 11/13] virtio-console: chardev hotswap support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In case of a backend change, the handler functions and the watch have to be reset. Also, avoid unsafe qemu_chr_fe_get_driver() usage even though the pointer is not really stored. Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy --- hw/char/virtio-console.c | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index afb4949..198b2a8 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -49,7 +49,7 @@ static ssize_t flush_buf(VirtIOSerialPort *port, VirtConsole *vcon =3D VIRTIO_CONSOLE(port); ssize_t ret; =20 - if (!qemu_chr_fe_get_driver(&vcon->chr)) { + if (!qemu_chr_fe_backend_connected(&vcon->chr)) { /* If there's no backend, we can just say we consumed all data. */ return len; } @@ -163,12 +163,35 @@ static void chr_event(void *opaque, int event) } } =20 +static int chr_be_change(void *opaque) +{ + VirtConsole *vcon =3D opaque; + VirtIOSerialPort *port =3D VIRTIO_SERIAL_PORT(vcon); + VirtIOSerialPortClass *k =3D VIRTIO_SERIAL_PORT_GET_CLASS(port); + + if (k->is_console) { + qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, + NULL, chr_be_change, vcon, NULL, true); + } else { + qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, + chr_event, chr_be_change, vcon, NULL, fal= se); + } + + if (vcon->watch) { + g_source_remove(vcon->watch); + vcon->watch =3D qemu_chr_fe_add_watch(&vcon->chr, + G_IO_OUT | G_IO_HUP, + chr_write_unblocked, vcon); + } + + return 0; +} + static void virtconsole_realize(DeviceState *dev, Error **errp) { VirtIOSerialPort *port =3D VIRTIO_SERIAL_PORT(dev); VirtConsole *vcon =3D VIRTIO_CONSOLE(dev); VirtIOSerialPortClass *k =3D VIRTIO_SERIAL_PORT_GET_CLASS(dev); - Chardev *chr =3D qemu_chr_fe_get_driver(&vcon->chr); =20 if (port->id =3D=3D 0 && !k->is_console) { error_setg(errp, "Port number 0 on virtio-serial devices reserved " @@ -176,7 +199,7 @@ static void virtconsole_realize(DeviceState *dev, Error= **errp) return; } =20 - if (chr) { + if (qemu_chr_fe_backend_connected(&vcon->chr)) { /* * For consoles we don't block guest data transfer just * because nothing is connected - we'll just let it go @@ -188,11 +211,13 @@ static void virtconsole_realize(DeviceState *dev, Err= or **errp) */ if (k->is_console) { qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, - NULL, NULL, vcon, NULL, true); + NULL, chr_be_change, + vcon, NULL, true); virtio_serial_open(port); } else { qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, - chr_event, NULL, vcon, NULL, false); + chr_event, chr_be_change, + vcon, NULL, false); } } } --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499263496250325.32594795167154; Wed, 5 Jul 2017 07:04:56 -0700 (PDT) Received: from localhost ([::1]:46392 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkvC-0006TU-PM for importer@patchew.org; Wed, 05 Jul 2017 10:04:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44961) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkt9-0004t6-UA for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSkt5-0007tP-71 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:44 -0400 Received: from mail-eopbgr30096.outbound.protection.outlook.com ([40.107.3.96]:45373 helo=EUR03-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSkt4-0007qA-TV for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:39 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=OH5SzFbMVcULo90EKPPvcqqJfAI7nVkpAeMJCMnZh0Q=; b=I0bBFFZGh4CAz2e0IT6lAbNqu0Cst67bdlCE8nNIk3x+O8uLiJD4YvuxA3t1/es77ZheUl3BGAvWAfEBYjr/N1pAyl0SYbTUOko+05jr9tNQKy2d3+SF/Xol76AXj+RkqChstZ1KuW8lwb/7c23tgyWjkLlwzIp++kctdpVv4Zs= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:02:03 +0300 Message-ID: <1499263324-15184-13-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2894f80f-7bf8-42fd-14a3-08d4c3ae7e73 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:Ef4SLOkZ/LzthzCJRAHrJrolEw1g4xrKVZrLR5hJZ2CvHFyFVJcUVg96T9a8RS9ytVv51YK5UxIdwXF09okwMcyBOW4R4uKg+0xU1ScAWll1U+cbSDmfikdMVjCb1/EZuERUSSbkytVvgnRSL7UyI2uiyJAY/1arskb71S7ErWyeR0zaZArm0XOcWyv4deSsrIyA5hi6sRFUikpPr3cnD6qYDQiiOuMqQtrhrDNrmcj2eSp/3VwZp/9+qmSZaV8B3iyf98mrQtZMrwPrKj83Bf4p9QVtaNYzWhpm8lZwE2X+ZPEb7snrjd7tloU4gyCsz/Frjd8TABiim1AXhe/ESKwIhr7mfzUZSWyopQwCMGCplbyqlljRaQ+Ksju0R5XnFF+I1beEstAm00/n6sWcNxfTnm7atm22FN/vL8IoIOgIZGcEoiSWU54PXM/GUp58ybw/jjRfu0vwi2U+JWj2DaQP2e/PlAUIcSJWltHXpiSZWnUshJ8LWIhkp7FQjLChVQwPJPqLbCG1eHFQ3HhK9LyBLYNzoi8HVKk47+/HaJQYUOyNzBgATFjpHpYXPsmt1JX0PN+N9fWOqqWrtiBD+PBrpzfFCCZvpl8Zi5qId/7rL8qiYri5drJ4nsjPhId6ueLKowFQitSxqhBcFiLTUXmBjfz0dUQulnyNSaI4+SM1RRoHfuekeH2Z+Teiaywbz9DUq2a7DOBMndmOR1AvEScSHXm6W7SFOnNdOx0Oz6M0eqpaawTmtRd8hZJqlfvF X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:+y4IjtM+pLjGgIOBd+BQ4m99EVNobRdazWqGlZOlFVNXUdwVMx9nriqwXWBVYnmrDZAR9OvKYzhdE0oQuvoV36rab+mPuynz/Csclx/FVTuoPrgxunC03r9eihosaQ9qIc6ppYEtiuClGbl5JJ0bWNWncrJPgzqj7p/SAzSR4vd4GEjBQqko6xjQHyZIubie6dPqxsyxsFf/TFbhnv6vSnqJlenWMiBqPY7NoRYe/JRhtzBadBGf23Qzm4gcm/grdM3oz8dSuDbtnpwyDyyb+lLdMaLnUL85KOW5OMEjyafWuOIqS7D3kGkKLR3+1V5bJfAcPi+f9QEpuGmw9FWhEEkgzdesD+QJbrUtK0aClIOgca34BfB3b3W4djIdjMDqFsZ5mLkmLta0faKIWObHNlI1O3sMrKau/AIQAzZM4a2IPHMUUqe78Ua2hBycuPBbS8IS2Gut5QlrTA/wseKKrvxXhF/QX0l3St9wwnrsBJp3AR86kJde5ku+oSbUGK6sWLxdsydRVEzyYF/F5z9x6MfTVc2+aW1DrldcCpY6bbRrND9+/NkmB2IPweU0lwOqk1C8Zg/pgcgWzNOBRVHmhawamAg7ltEtvNj1T3Tq/2in66UZs4wNxtDfk53gycPSEiltdbhNAVwCz0qDMBmJcBOVOsgrBlclg8mf0uJbhRfQjJRlOSi52rQPHahQ7kYRIPolE+FJIiu1bmi6IWFdVVKsUu8tR45apqqFpmzQNTtRSdmz6aXJufujy1Vu9026IbdoRv1L6nNrPDGdDAYLGYD6BAiRz+W6GhS0J1mZ6mn34cLUQqAeaYrZkX7iZLcolVS8+nyfbYTp40qmdbeHmnmbfym7RlEMzhthu5FUD4dGFGDtcnYYLCWy7sASfsA28fgjB+e4+Zm8sHNK9SGeTOU444Fk9goz+AwnZWYQ+5M= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:hD7vun296xC8HeHW0TDRKQAQtktDPUWdYD0QTBY/3lv6yOISgAqgRIBmOVQmLpkJfRTCEyQyPD+Y35UpjKk5vQYvWStf379NYw2PF2vxSGmRdd5fZWPwHnQWJb6Pz7UMMgSnwPdxwzKCoXejkwtGEtLCaKRTyQAwx+YUjMVS42DJXO83zavX185BF6t/oDh7OGKNJyFm1m58Nq3dLP2jAgOMrENz+kjbn1Cx3qfH22dNS0yOddYSXsNgykYtj2E9TK9hrSNsUjU8QJmZ/VqX9dFZRg2RMWu86Z+cER5mJondQelst88Z547WrLZ1EHorvKW4VQ/TAtFbr3foiadzU8NHCU/WsaM9z0usSDZvW3HaPOq2Klluzu73QN1Uypu5fkY3jfTMHs6Jy+3jvr0T9iSIRva2V6r1SsRMKYvNinQpx4ZEDxD+1WD36bM1/PtInbfXO1pw7MD19xWdSaXha+JS6B2mVvB7ZHgU29piWrKEA2+HMOQ1RahhECS8CWQXjPp0gWzB4keT6jJobCbIxFul77o1yjd7XYjlnP5lr6M21mUlcGjUE7Zl5mUtblFzJQ8m2RzgdprI206sJNPjFuhTDQSOUTR5Rn7h5aIAPPZ87ukiO9yPw5DK+kOhETPSNdW9gcgCdrRhBR1zrpRKZXPVzoBfwLww2dI2ntJ0Pr0= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:D/+g29FnpPEHx5V9+lN25aBtZ0stMJC6QR7v35sPKhnCd6zHwVyKrhuHBvRjJvWb1ocH+S8+1m1OEK+NcdNuuww/RbEzZEuAKGVGoiBPumTxKakQwoP0i44ia+/x/YRCXrOMTrLig7BZdGphmlAdvvVJVfzF3uAjCNtfLDuK4NidnE0O4EYqtXeGlQB5YTdIVrC2LWRBATFLIN483jX2hoB9/o72djxOC3J8AM14pNWxWLyOm6paHCWmGi29g/BKEkE8iv6Vh3yXB+l1Y7n6CuftPlefEaE1nIE8Xwc0AXDcQmEkpCkr4OX8voe97qrctl7aCjC+o3PIWWG3XQuWfOXLBwUFqYqdmzOE/k+exiL1G7ztjb3IQOZ6MUZSNUHo6hdz7wBY7m2LngKSxcuaaZYhGUPo87SBeXEf7lc16Cg= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(167848164394848); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:NF6APjZRDmUgYZgOYlaChWwPl1Wil2orH0NDW4r4?= =?us-ascii?Q?xYifr798424WnPvTBcUg70U1g32AEs/Ar2HmA9EtDdt02Iqn7vH+DzjsNhxe?= =?us-ascii?Q?i7tHNsyNZNqoXq2w96AljaV87wqNWmmYAW7a7GiawtnSGzX6k1rDMiRLWVRB?= =?us-ascii?Q?NAoFN/llDda/NFTQ8zmLd+DZdmNPbEtqt6OXFNLz/5zTVya9Ys/D3O35qNos?= =?us-ascii?Q?AEal9uZexA9+OG0m7UNqkanw/E64KbC8CYYHHoNra2qsK2PJNoxvriqvlar+?= =?us-ascii?Q?gMptHcMexgnMXDVhmJjdkJs3/DXBPIrK82scj8KbPg+aP1QsfWfce+lXYJtM?= =?us-ascii?Q?X3E+kyWqwrMU6klNMv3p/tUXy0fRSa9aswOhRkf4yeYgQDTpBoo9rCiTt1Ry?= =?us-ascii?Q?bI2ea+9Q2BBm1w6Czf0MYsxV1xZXjXbCAscFu4PPQ4sTXT3GquhnI9Ypyqh6?= =?us-ascii?Q?ojNWFrjvfOXRUi4A3umaiJ9wszwBaH45bSjlF1lZGmBt/NQ5DWwXdAiwy1x1?= =?us-ascii?Q?YXiAp/B8SwBXtRCLkx/w5XpO9qD/BYzsQIW8xLE0IhWscp69l+NjX/Mn8iO0?= =?us-ascii?Q?1cUNfqpGCm076uN/T3w8lkP4DXkYQpyiTBzstoxWmoaYjT8/T8cUvqdAbtLg?= =?us-ascii?Q?mtsJffcn7JpABR6wunY9LGmqwRzPmzWHYYUSOGzIEM9x/Zry56BYxRqjg4zv?= =?us-ascii?Q?MekDt3JA3REfIwYgBWwgThia3UpQ0j1M9reZlWyruMxbExaKqcwWOcBP7NgK?= =?us-ascii?Q?BTGDiVlgxzuQ9TZVzqu38jXNsrLriXVlvnUYrGxa6hX/ZoSzsjUnPtNzlonb?= =?us-ascii?Q?HHnWwlkPlolLeoftDG2Y8w0N8IvokM6B8A4MCIyuiuwpdNN5nI9DbG09shDl?= =?us-ascii?Q?k1E8RePwAWD7BHiXSN/Sj+Bv3ueOEyZv474C9nj2Z4qzIzo9xPAAU2MzuExV?= =?us-ascii?Q?Jad3Ql5V1e0lciPZEYyAAjGXp8EjnhP/vWp6fduJ4n7CF86oyobpez1wWiad?= =?us-ascii?Q?myxJxj3EgbrJxJRJWXwgMhpUJR1SMyRJQoPGIaqS4GJLZehe8qg2tbfAnGmG?= =?us-ascii?Q?QzTF7ddI4tRpDGt64LS2K/VSc6ruyc9dcRHlECpwCEhlmDsINEb656e7tJVr?= =?us-ascii?Q?cK/6FJt6syaun8KdWa7lc1bWrWdrShZDqrl4Ymt4RV8nc/lKrqpgtpzKi6U1?= =?us-ascii?Q?cyCfoVR5PONJCrjojvw3tojXHSdzcbvsMMI9enFagWQu/DDmJy6C+dZq1Q?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(575784001)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(2870700001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(23676002)(7736002)(6916009)(47776003)(305945005)(15650500001)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:88+W3vl9Vc3J27jGiO3iOdvMffz5Z64F3lbb23O?= =?us-ascii?Q?bD5retaxic+XEKpwJt7BildF66AEBSfLLtdQZYN8OpTa/FlOpRjZ+A8H02KJ?= =?us-ascii?Q?2WH1vAl0GNuPWvPSqtTX48oKkZDgb/pDW4FnFqi/yCmS3wnyDBXmzWcHc+Sc?= =?us-ascii?Q?j6Db1N9PQB7jbC18tM3pL9EluWloILbTYR/DJKuYxNJeMVv84A8MsoHbLQFW?= =?us-ascii?Q?VWOwUETlFS6Yoh3n9hsz/vgPYJPyNPm75vF1pRrKXuxbvKve/l8KSIMxeI33?= =?us-ascii?Q?hOmuBWlqgLPGenOIlyv+jjtClAKy0j5P9DXnhJsm8w2yKmQSZE9NGy6KcAIe?= =?us-ascii?Q?ebl1SvD6mMWO219K6q0pU8dJ3Y0KTni6vJP3piJrDDIqH4QFT3gDzGolU/Fz?= =?us-ascii?Q?U4Eb7ISjWloBs7WD2W7cHxz9w8iBysD23bC/0CqF1fkMMlJ0uursqDF/5krp?= =?us-ascii?Q?RxmfDiIYVR2kbDSa/Cg/BJD9j5umNPQr3pLTdZNMyTYtC9bZbaXuwhzSB4jS?= =?us-ascii?Q?9R1fzMxamquHp5IfJ+qKs1TgHqd9p826HkHHMlA/8TTbAWwztpIIzIntYHAt?= =?us-ascii?Q?H6JojBC9z9IBq7B7hH22diaRXm/Zwk8MZzRogfC8FCBpVCtyMIclsCIlbFc3?= =?us-ascii?Q?tyH0MDFtKkcqNodf5VLMNS1VHrC+VKpCX59BM7iNlqgxtcUsbx9LbsnFRHUM?= =?us-ascii?Q?r03j7xnO2ixx7eGZR8GVrxcHzJ8rWziYpFXa5sTibT263AGFdZ0U4EVSkygM?= =?us-ascii?Q?RoaE0fvf4bUWt/Pk7ai/EdBSP9+8q1ek+UEvs6+D12fXEjMpN+ur3Nz4syZ1?= =?us-ascii?Q?fs2UP4e7PvxSa1UVYZzDFFK++rur0oZNV3fVDHLxwgzWe6jI/KsBBBPxF122?= =?us-ascii?Q?QEGyxEzqhyGYJYjJ0punHLk8+IB7eQluAootG1dtkCKMHPf5fahksex4FS3Z?= =?us-ascii?Q?pBtSkGp421h+s72nptiyRaTrUKXtSOLIYclPGuh4y1AaBLGPOLakhzIZTcKW?= =?us-ascii?Q?mqyaRPTb9E4637VFtUoAJCFzPEH4Vs0sr/dhOI2Xv3RShwMHkZKwambl7DOf?= =?us-ascii?Q?WC8QJmR19LqAQwrRN0D3tohAQKkNBv4wst7fejXYWqTLoAx8z1oz6tc+ZIwv?= =?us-ascii?Q?TE6/LYJFSpoE=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:JCednzfco0leUrd2QZcql7SEuC4s9pEQJDM/3HDG?= =?us-ascii?Q?EBH0JSoVHpFwQt7rCOu2/E8CBoV34PiiaHtl+iBljXHwdhFzSFRzyY4OSbjM?= =?us-ascii?Q?rhtolTNAhPzAmCtT4AXvQPVXYUc7oHKr5kbQXMNJQfsnwfe+bWB+DS9nHUuK?= =?us-ascii?Q?R737zgapSQnE9zEzMjTFYSmW3HdgasQTNy6rkkxEHXW06JtGZsah3rL75ZTs?= =?us-ascii?Q?gIuDntRxYueumyAMmTeAbNVuYt4NPx6mG+xsgGbWLfnDNRuS6/0y1UMRlPVk?= =?us-ascii?Q?U9MXEMbjchkUtKIdXVe/wC9NGCng+IndcK1fiY/qGI/bPN1ZqvLxvYXbN8t9?= =?us-ascii?Q?SliHwZeM8mAEsr4AMyfXTOTl05Y5e7knoTB98rYRC3oZZoXxjvMysjJefifm?= =?us-ascii?Q?lSvfPC+f0II3TArv6DL6v0hhLZ/4lXcz58weTWJBi88TXTQSc7tv/bepXIai?= =?us-ascii?Q?UG+1K64KVAtoPS4vELURtZJW46oLaaEzv5pJBdBQ9OhRXfEUZ/523PFGO+68?= =?us-ascii?Q?2BZ3Z7zQGdRYojXew+kQxs4EE3xQgCn4TKDB+Uwjx9K+Xf3GToUHVq6RKPBh?= =?us-ascii?Q?rcXAkUZ1GhOd+LAQoyzbzU+25by8EfiL3wvV4qbp48FLXRgJEToZ6za2DB94?= =?us-ascii?Q?QZZrYz1ywUBJ2NC1DpcfXJcM6gVzY5PMMJq9izpTd9ebouFb1g7JkXhX+LG9?= =?us-ascii?Q?oee/ijR2O3kXFGzRrn+Rr69YdQuND41+6gqv92FJNPFJcx80hwVB63sMhfD8?= =?us-ascii?Q?PZKR/qpPvz4mKQyDfTLGQsAAwidGwbkZYB6uMG9jbwnfZw0tQXTD4sVthaiS?= =?us-ascii?Q?FGkyTonmdKBJM1rBcTruW8Dh3dh8LN9J5uiO3B+Vqz/VaLecVanHVzeu7puC?= =?us-ascii?Q?c5K0Qh7oc0tAbTfH5BQbCaTRCezNG1yQJ8Vil9IP70kAcLoXVEidsGO35dYu?= =?us-ascii?Q?EwCE4BOErciICckKRk+CfSaJDt4gml/0N9rCpZLoO4zfwbqqcK0LKbDnLRsS?= =?us-ascii?Q?4P0=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:lrVft3FdGBTPs7ad1IrekCfxH5l5CRQxGuJMaFDlSUdSZbZHZmmtL/UNg8gKtk5zUj28mffxo+WgKlsVEUlcKvZEByA3PinuDYxtncIlICuaBzMe7hsQ8UGpH9D0bMv29rHbWr2DrBxkOzvtDb1r+ebLl/W0KT4fmteWus5lvWFiO2PEcZQjQBqpHaemVoyQ0uh6iG4ojJIDVSsvpgKVFqfKXxBfLtJFxMN9vCFLc1xDCWt9tlp8ngpsrWIY1ZfewOK6+cq6MG/A60sVgTPsP9Q2LLFZGVa1QzH/MBZ15g9srElQq/HuH04IXCLVQI9fhd1/0uVkxJdBtYgcbQ5s5K+r+HaSfi7JsQxEkT1eW1XB964fWd7WGiZdwn6qi5r83w68y7J2BQ1D/FpzkFz6/jTdMEaNPttybfP9G1ZShRawHylWh1sFyy5knGEzgaL4c1eUgGhniZTe1Ud/vtP5aIlgdS2fyx7Vv6unwo4HLTAO8Ms+YGc3JGSEt3VPjjZ5; 24:6ThstvXGL9CvgN1AW6c9V0LNDsFnprLf6PKwL6aFOxrR9o8TzXlqfALqnjLrHlkIuQKht9bo/5/0qkgAbq+NDu5h0pRZKkzxUHg3K876Vw4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:AwlMdYrVpmK3Ei07X8k9aiR6DbhVF9fGTTsBKWyFB9eNGhJRqYjvwWpyy88kanyA/+wLI3Px2bu58xlFGPU+C7jHQs5sVFv6nfqA4Te1VQLqPzkClBa2zYT721eOhgnmOakKRBAUl6iq4UiJ0pbmGfVVFxUKL1MQJcSfWNGEV0TzYYpL+r5wXLWIHPHy6jeBlGO+E/797wgbp+bw/uGRSa7WK0L/P6fTKOOmbu9bH1QIKnygX7XZYDQ/ZOlljZks6vZDBr2XC4k2A5dr7JEwA+6F/JL4EgdSg150u7G3hWP7L0c/SS797RLmKOUJoBqyAO2ImZpbOfCCy7HyY/hQaDaVCc74ISxoJ1PTgY8e0wyUzHrCn8c438Fq0BLqhLb4MQZg6OxQOk/Ih/w1IMu1zUVTwQoAyK3l0sFls/2v4aQ8Pjqmpn6xD/doc53Tp1uJlzaKdGlrowdF3k0m06Z2TL4eZX2N94cXMkcQo7FwIa5t5beQHIN6hkhOn6OFimJdTae+pmrFa0XOUhtizR/jEpd3gRS+YYb+RLuIeiJnKnNxJSfOXn26A5JB3S+9UORgz6FSAFTMKdNmScWS6qzD0qmAUFQ1p21ApwaG5zCfDrnX/eMmWNk8awGeRn89BgOUU21AjxxxpDFqgEAW8BX1J1WIM+0nXbnBgjf6X9bS6OJxXZ+qTDAxQ4DdCljHlj2JBcA6iM3b4f7dJjRKWGHT+Oc/52Ina44vDW9iE/VaK1bzbGaZGEKIQxR37uxszMMQJZOxFoi9c+PndL9BNvw1tvejm71PrA1MIlQH/iuRcn4= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:XwR6P4vpIt+FumsnRaLXavg9O59HOftcmdW8tacUnBy47YR7jO9lkWR+mXqTVCp9l+4piN4aWtC7SKrYcztUrBIL/+FdXJn6ZxUMvahLhZx5lGJbPSjxU+Hs7MkKS5iaqrm8y5m4p9HC3zSoUXDzkinjDv0CwtNHy0J+5VHZhvk= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:36.7091 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.3.96 Subject: [Qemu-devel] [PATCH v5 12/13] serial: move TIOCM update to a separate function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" will be used by the following patch Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau --- hw/char/serial.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/hw/char/serial.c b/hw/char/serial.c index ab14ca4..e47f0b6 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -312,6 +312,24 @@ static void serial_write_fcr(SerialState *s, uint8_t v= al) } } =20 +static void serial_update_tiocm(SerialState *s) +{ + int flags; + + qemu_chr_fe_ioctl(&s->chr, CHR_IOCTL_SERIAL_GET_TIOCM, &flags); + + flags &=3D ~(CHR_TIOCM_RTS | CHR_TIOCM_DTR); + + if (s->mcr & UART_MCR_RTS) { + flags |=3D CHR_TIOCM_RTS; + } + if (s->mcr & UART_MCR_DTR) { + flags |=3D CHR_TIOCM_DTR; + } + + qemu_chr_fe_ioctl(&s->chr, CHR_IOCTL_SERIAL_SET_TIOCM, &flags); +} + static void serial_ioport_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { @@ -426,24 +444,13 @@ static void serial_ioport_write(void *opaque, hwaddr = addr, uint64_t val, break; case 4: { - int flags; int old_mcr =3D s->mcr; s->mcr =3D val & 0x1f; if (val & UART_MCR_LOOP) break; =20 if (s->poll_msl >=3D 0 && old_mcr !=3D s->mcr) { - - qemu_chr_fe_ioctl(&s->chr, CHR_IOCTL_SERIAL_GET_TIOCM, &fl= ags); - - flags &=3D ~(CHR_TIOCM_RTS | CHR_TIOCM_DTR); - - if (val & UART_MCR_RTS) - flags |=3D CHR_TIOCM_RTS; - if (val & UART_MCR_DTR) - flags |=3D CHR_TIOCM_DTR; - - qemu_chr_fe_ioctl(&s->chr, CHR_IOCTL_SERIAL_SET_TIOCM, &fl= ags); + serial_update_tiocm(s); /* Update the modem status after a one-character-send wait= -time, since there may be a response from the device/computer at the other end of the serial= line */ timer_mod(s->modem_status_poll, qemu_clock_get_ns(QEMU_CLO= CK_VIRTUAL) + s->char_transmit_time); --=20 2.7.4 From nobody Tue Apr 30 23:01:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499263758474220.0445940062499; Wed, 5 Jul 2017 07:09:18 -0700 (PDT) Received: from localhost ([::1]:46412 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkzS-0002AT-TY for importer@patchew.org; Wed, 05 Jul 2017 10:09:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45000) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSktB-0004uP-L6 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSkt7-0007v7-OT for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:45 -0400 Received: from mail-eopbgr30130.outbound.protection.outlook.com ([40.107.3.130]:12006 helo=EUR03-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSkt7-0007ts-9d for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:41 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=6wqyXlrHJf6HgndzqzAplySkxCMbef7TRFQbvFF4tAI=; b=Z4jwN0WXvoYdiibQEynodLqYnjBe+h+8j1auqLKz2VRg5TMvnrwd/QZRpCPIwh+TygGIsAIx0tMwIWLmNVjkJDjEmx5eZxMIJ4J3xrXaGN7a6UOlTjM2JmqR2aYDPymXou/NfC1i4Cg1tiINLg0t/4Hl0Nk70+SZx6za/PU8VlQ= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:02:04 +0300 Message-Id: <1499263324-15184-14-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ebdae06d-92ea-4f31-45b9-08d4c3ae7f66 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:apenIoC+FUHdFquSH342UYUlmt9U7X1VckYBwoDNyI2Osw0ODgyUWA5eBBwr3lVjvOThqXwU6hNPBftdP15gt38+iAERXOaCgOjVwtZjuj20XDrhSPsCEA7zuAeS/7YiSUJ/np9xCQQOstBfGZ2UZ/5Ai621guT59ZTnLlsCS2Sv73orcrzK1bDHKSb+jPqtNjehjpznEVFwW7W6vqapq0IyT2jkwihYIkxA1GkfEig5NyVbZJHpUvQ/Ax6yjWuSc4KaTF0P+AvJXqt4J7dkSR/qhQ2VAQa00l6lf3NhdaMf/Hw2Sid0vm6HeRa1uuAjSEJlqwliUsNRcuI2qbJqKtIY6OJM418+/XgS8TfEwWZCJw3HYWg7jW6RoS9rW9pjQRlsC5Tp+kCtRtBsREU8T/zWhtA9pgBXvJ5ASjwaTMF55C4F1svPPgA2MxIVBK/l1KL5/9nKeTt2q80Hh46mkwhcjiBYa14mSgOsrUMLssFRtYws5hhjTSufrEb+PLfOtKh6MDq3mqT3QEP6mkMeUZ1DneSbc3PJzngG2m86yXf4Ws2w+b7yc7JSVPhv8LiGdDp/m14PqgD/4nqi+0oxGC2DpG40HkYLLyTOWOleIQpKMReHWGoL67+Vs9L4Sfw+92YToFECdQ+dyqBi8KFM8GaXV8XZqUG9taIoIivmsYYlWvUxphtBuWzCBTMjJ3OBBzTlaMGtmsJ4XeXFpkaV+OmrrM9fzPjV663rM7TU8QzfdDFzMyJjoWdd742vEU9u X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:5uP80d9auSU6TN/IqmpaUlLYbeW3yQIw/AU6rfSlHyfYCFkgEiiZTnfQ3okUeg+YM6NXpcOc2OTxuPQkMSVfGj92XyjOrNBbcGvGvfxsxto6Dx7q/omC7NwMucoXfu1zAq/AOhDmhHHSbyp4HMHw/qpp/XeevLDbCIoYFLLRPDIeP4UkgCuGFoZnXEVY7ascPT2bHHan8TUuGoXbxChIbqbEuMSGB7S6stWigwoA7lHlRfYvWpnANsgmhtjBYyyS0Ry6blsIUFuFF3TFw88AsOse7im/++17aL7pYJBX6wr0On04Hl5i1aoMPlvBbS3LKvAXxmnPYn/wftKgydKsDLcs6q/hRjm3FnBErY2xlBAoFgEdk4blyxJW0+S020bRw1E5Vy1+KryM9z6W03woaR6DEppbhXURG2Bh9cnRvZk0ZujNOdoD7HApBsQfKrQrBCikmtV3Nfo30cV2/QROkPuNRkdfeWL1DSGydm3xNlJ3gACpqpfuBTuuR7CtvAfvJWlIty59hl6O+gS51FLmqK0RZoJuDGRlLh3Dhh+wX9z4OHbAQT+s4bEoJk6sKIZiaoNkh2zWaHHFirt5IKjhfQfmMbYy4dGGZfSyUrckUS98ATZz99KtyljxJ2GHas/y/jlk0lyx1b5zqGdNaM9Ysk81PwC3AizRLpG9w0f/P0nv9kpONcaTCDzIlOIdCGgG/ElpX+pv4cKNfkwuiDdsPXyU4ac9Qug5iIL8o6RXodVCkpVsiYZbke1BQEEwUqAgvvp20Rr2wgTeFMf0/1USe/difcH75ye1j2E1kA0JxhxA9fW3d5dD2caTY52m9czVyVT8mNJiLWvpbOOBwn2S66z7hhdaSl3AyIGtMHziQNAc5QPl3z9DVPUAl78FIk6+FIdSFQmWHdRvYS3PnHSxjlW662GuYfxd8MiclO7nd5c= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:0KvT8RHGk+lIWsygojMEbbrUFnVYYuOkTuMe8FInyQNnoGoKmYU3NqNFZvtJWBYS1rcQ4EEVWMGZwgL332NHXDarGaRhv2KyTvuRsrCTvT9k3a3Q0LMzHWvZHyezpNGPI1uuxyBNkPA+1Wsn9zEn6sFw2gtoAi/9NrF85rokG+DMs6pIEdYNj5yb+S/ICiHhOIu8NvYDmeOF7r5dLdhYJPNKmBFGGvSG1tLubeqAFmcsXhXFtGNtX3o5T2c3i2XRuGYOr+DmrpjDcUR87zZTdTFmBfBW3fejLHv2oYL44hLgXWi/8XoROksDe7uKgum6qkaJ6AdbLMnua5TI2mA8BzfgRwukX0Q3T1nF5o3u/yw1dwBIyNZB83Lexa+pdOHIxJqtTs1hN1x3nlXXcOp4Ejd657DXxwO9HMuTx5PtBmda84ohAAeIxQ9Y/vXFGhRfcTGPdnDsMhjUX0wf1UbE5ZKcpl2NrbZNboG6RWehqJI3YmTXofAKTB9whK8IMLoaynqq3sSoECLAq1QCXaH/Vq9vQX/Sx8EucWN9PmHOlSk4qQmTEPSYpJfGHAscHM09cEgfadYa/H7735dnGyylINIIheOsQtWJyg7aQfypABZJlKeTwSuKSsw9a7boIa+d1wMyUkpcadt5Aeo06VUbx8bIKI5uyQiVafSRWpjMicI+Sk6O3vHp5EbnWtGmK7RXMIs8bSQhdj249fokr1ttGw== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:AZ/8jcYoqHT7u8LMZ/ipJ0dMHT9r4f1cNIliBrmYx8EAIv2aF402bsgYebDoR32ioj81961nE17gtXI5vyqIBbCGBETDRm3NeWRBkvLUov1XlYfSlL9bAoBahFBBtm3ZVe10uGkat6v1kz0FrRisIsubssyfKau4BkBhkUk2Xga2jWcNZvWhhAAssyC4imoH19XQoSxLry+ZFQk/FnES3ROr11pnWL/xGWC/dv4ZszrvGx3NMzvDBh5aEnPN3+xji8tjywNfGLp/FzPvYslTBKuqJbtV8YVEDQvuVGwsYSKuCg6kQXQpW323BmsDZRPhMkv3LVFNRrIiZpMS67DfJq2KZ1svl+lQ9RwaW23RqZA4HOzTqT5rRRZ8kKSPL6F3/244JyyoaNLNKFd4qRiH9O7zaZQ6j3ZRhcfXWa4ucYY= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:z1By35RZwBNIYcmZHertgJiyH35u1Jrct2iRh7yU?= =?us-ascii?Q?y3sU2D6CGvlYysBjUr6eUm6KvJB2jBA8Jse8Kl9R0zjcaQJCCEgO3X/JP+Nm?= =?us-ascii?Q?kloMYBIVjTLPNxDYkj77KrdwNkBPnN5FTC5c8bDf0t9PSXyuEE+xRBnJJbhO?= =?us-ascii?Q?ibRDv6aENojY4BQ5uKObJBy8MI1jHrdRu/hk20L+35GDK/5gTGmgBRkYxrjR?= =?us-ascii?Q?s40ThtEOHd/bmMiDaOA8/iVxLdfElOop3VFh4RzNb8m1dj8KeMihlN68l4gU?= =?us-ascii?Q?Zj67H1UqdfCi4RqEWVJ0d37wDOH9sLM6TqZGVkTGyVm40GxLAAgKHsabU/2U?= =?us-ascii?Q?2NHApdF+BA7EpJuyghbxeDHnkUAwV5cnKzuSAVVnOAgggvKGTxvGU/zuuqOp?= =?us-ascii?Q?5qa5SclkMpKnQ5QBLch5WG4MN7NPLLcmeoPIrOBMsAnuvFquYkcvG/A1cJWI?= =?us-ascii?Q?/cY+C6MeJmfmEqJ1iI7pe/4KH/E+q/xlDcZorWvF/AuR+RK/AbAkwbBwawJO?= =?us-ascii?Q?aMQiBFsD8h+fzRzX7cbz9COVBOxosEQYX30qVltpR08uh/UwuE3yDBaZFcV/?= =?us-ascii?Q?6DdTikbE8M6Unrj8lke46Othh8fQsDhHwVgXwksJ8hi5E0TKWHsGH9HTlIKC?= =?us-ascii?Q?HaS6oIEf1BlV87GsbVi6ddDB5Jihx2L3X0UhEKOV/qmPyy8Wy7yzIH3MYkEM?= =?us-ascii?Q?DQsjb1jZEdwFpzRW/PaLvuOzt1E+CRHQDplMM+VSJmVMQTwQPGUk+TqCSvr/?= =?us-ascii?Q?iM1IjgCah5w3DZH/wKoWxcyWS/9BG0zFOLhPk+yk12vf2IYJ4nGJObOa/ZOH?= =?us-ascii?Q?k0mt8BbV60FlJrE9FMp3ny1lQF/VL0U9XWLogdqVpoDx+xgWcFmh1dGQJByP?= =?us-ascii?Q?h4xVYtvaMEL5Zjc3JqKFO+GzNXCA/pHwScazjcGFqsphOLYIEr8SpZTsVkYv?= =?us-ascii?Q?novhQmxmjilYlEFGMzi7FXWi1pGy+Tfsh4+p/ZSRP3Kz/BRSlXUWYqF98oJk?= =?us-ascii?Q?SkZKOj4aEEAR1NVwBMEXriuvZ0V/lAm23nKtOnqhxUjEuceXEEmczh3VKqZy?= =?us-ascii?Q?9zznCpDp5QIVWHoChRPl2eCx3gxHj/FlJkbXqjnCVyKO32sR8i3x/YT6sx0M?= =?us-ascii?Q?yPOjv0dLNpcjVPLp4XWGabh8MYLKlDpncDftlsknBbEEohwNxVRa4eSDqiS2?= =?us-ascii?Q?VR9G/BcekQFNodupWaZEl35p7RREeXcmYYeWRdc42VvV61Uwhf3kOhMeWA?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(575784001)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(5003940100001)(107886003)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(7736002)(6916009)(48376002)(47776003)(305945005)(53416004); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:JWC4zsddW3F55jztlxeg+blXlro8Yx8okI7Icx0?= =?us-ascii?Q?DamWUzezmwhyCWZ10mO2iN2A2c0gM1FQarSvZNZEyjbpdK/7x3x8bduqfSiZ?= =?us-ascii?Q?8yTLMIhjryHOdvhdj4GGe1lSvs0l0y9KpA3MV/aORfQuCbnDQQT9GFQmC7p5?= =?us-ascii?Q?FiQh+bbqTOG7DAzLAysvpt6nRNLX66E3lod+m5g4gWJ9UdZUGf+ejhRFUtoL?= =?us-ascii?Q?i+VMbchaMmQSr6P0wzJ7qtXu2IQBvM2NSzpqIME2GRpElgBq8BOgdRUh8zN2?= =?us-ascii?Q?fnj4lVn5QecMvlRA1GCGXHa/J6mTYeAR2YeDCQYbd4CEyWjS3XuEBb4b5tTh?= =?us-ascii?Q?YEakgfhFhH8DoVHFoHo3u42b2fMEWIX3nkY1wRESweUddAIYHUe0gYuuHsX2?= =?us-ascii?Q?l2AW2MxcNJ9vPYdKyWg7E7khPb6VkwCIl+m/I3ndH/ahOMK/0vgfKtPoW8ko?= =?us-ascii?Q?52GXoH29VHsvZra7MBn0UJV/V0c8DqsqGQA2XLXrVB5JX6ypZ3HXuYC7P4wM?= =?us-ascii?Q?rEXou6AiHUEpau+yVwOd2zA5hTvCUaq/WSSgiJZ+/tqBcxiLt0c+OJ6HQnne?= =?us-ascii?Q?5CI0iGmMH+J6vdJCAQxKRil7dawFV3kU8giaMzboZ4VgTldDUJ+9aYAQXq/5?= =?us-ascii?Q?SZpkNnmHz0X1jmwu/c/VdFRq/jyq3AftbUxU8eU5Jn84aF0Ef36X6BBzxgwc?= =?us-ascii?Q?p+PCiK8nh1DjSsYzLY/hUARzQzK2cZPgC5t4GMHNKFYW9gQCfanSPmgXwKCk?= =?us-ascii?Q?/509JpjwzoL7Tg7+NOjR45MGQA388kmSw5h+Ggdlkejl2lVb3gvI7EbSHoQR?= =?us-ascii?Q?2bSBu9xSMKGVN6OZGlh2xDHA9QM9WrxgmlyEZWIFv/oA8NoZSs0B+ip5wvdz?= =?us-ascii?Q?bJZ8oqcGPFWW98AV90cvNOvrcbq1bR1MklXy3r1yQH6xTcP9bN9zyJ/oSFir?= =?us-ascii?Q?bOXt/5u4RtkPz/lfEWKUj0zs8wVN+tKUL/MVHsP8ijyN6vBzV1A2nPddCTR9?= =?us-ascii?Q?CYr+4aILMk8bcKodaX5DTUn+NWbX0l4ddx/qtlfSuOxRPRp9noooAziuG/Vj?= =?us-ascii?Q?RjW9yt0QQXWwVjWtSLP6ug9TdmRQmZBzP/CiuXLmXhuqLEcCi5w=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:pNIkj0n6BTFWLqlpb23ABGG5mN5XsTLiiGPOf0e0?= =?us-ascii?Q?DUcagK2zPmUKln4rYM7yTS9LmOq/yKla7a/7rLz5LGMJ/bsqdlW0r+0/t1Ai?= =?us-ascii?Q?NP9VrWeBdrDsmFjbTAgDVQluNuYtsRGiUMY0heveVDMVW0sAcc9fLaffu0IN?= =?us-ascii?Q?lEjqknbPl7Swx1+od9MC1EN1PLrTBJsxKXkorYlR5IS9LSPJXNZkP4M/bhQP?= =?us-ascii?Q?8RKrzcoflhaMstI8cEG5zBApSQ/lRVTmdtwHluPGMg1hecwCEZuZ7QDlG+z1?= =?us-ascii?Q?M+7k3PYBChpWnGVCelYKXF45+axDu0Oh73TsO4EcN1z66IAzqWLr1NTSzsu1?= =?us-ascii?Q?TRygXjPYMWAtIMdWt87RAr50S+bTPDW+Y8Q8Rj/XCXSZZ/stTbEx88kooAr2?= =?us-ascii?Q?U1buwtdv+aONMy1YgzXZn/1eO0LDd12x3ChWgBXIlI1Fgkd1RtJnXQpRHCcN?= =?us-ascii?Q?z04H6i+iybaIrRG13b8PBLIu3q6qap6nXaiG3oMugAmHdccy0KVKPYgneP9T?= =?us-ascii?Q?IJbYPkCdn84U9FeDyciqb0IqFayTwaFLed8QU4PvOlbd0ZQq/kqHy/MeSRpY?= =?us-ascii?Q?3Y1+xIBqlSPyH995iofe34KygIgDf2oEqapIqwGLKE2wMXFL38Fnj0vDyH+j?= =?us-ascii?Q?r06ci0WElib1QarTSaobxrQPy4A4XsUqgubX3BNSB8yxiXe4YVsDA10n5BR6?= =?us-ascii?Q?kED3iGLr8lnSwROuFX1q6PyN3you/gmC8CKjr+1rJEXutlXSA85WKsQr9Gwm?= =?us-ascii?Q?Mw4KZeCK/FzcTTz1tsHyFitH+zgm08zYw6DQr27qrXzeifZJoy41+u/jsOEG?= =?us-ascii?Q?VQWqsqOBOUd52mvkjtoNdXOQEtCy1v5hGtJg2g8jFDoc6GBCAgO2Tcgl8k5w?= =?us-ascii?Q?jOVQ+2UVBvxOu/r1oskFuF2Ksk7pAhx8lj1RV6gzBHsJUncfUY2JKxlyFk8d?= =?us-ascii?Q?IBJtgOtwcCFYZaBTOgPQADNewEL3eXNKDaRLDhSeLxJOppUwaRmLRjXqjAyo?= =?us-ascii?Q?SWc=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:lKxjZv1HatNvCiU+YCSI41PsJvSuhPEUZcMaiFqDuctsKavJFw4WMOT1NOGoMoS5BEF1IOX5+K6j/z00W+x0T6aWGPpVvACyk0f+Au8AEZxkjIH9nkEEteqfzwzRUrlOjY+smg0vSOziujYaYx2tvAGWnOFoaPzHT52eL2D0idR0DvHsYLuIoM6IHkqYgI98ILxXIrNkg9nEk2qrROnRqnUBz6ZII3W7KC5wDHSlN6h7wK9Q9fw6G/6Gw1gVVNlj88T33m0uYkSe9xuqFwGhbmAIeSMJFxti5crC+G6uqw8MvIa5cX2gWrYmNdka99midQAKdrDnItVYdJ5fpTtaROE+IRg4jMFgIDngEx4m+x0XtfK+W+zpwFAahymL9TIZ5bMJG2P4d0ZjnGl/ngvJqjfnD1VKS0PsaIdJQGVL9ZBxTXlLvfVGkT+Z3qLtDZMNc6L+8PMWk4nZ1JUIXJbgRmTOM6Lk5ElKCc9hrK5weJzpg05LtsUzzm7giKeY6auM; 24:XAIAAMK0OvHv0F6PYl0AFGfu9RCTMM01OvTc2PR9X/nUxsSNaAooAXbGfIs5jJyUSte9CS7pxlA0P90p5LkaB0CPyZqTnCPYMJwCDp1Qmzk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:dRr4lVoCWYURtxS7Ch7nswMgga33iOL+5GboCXGaZlNBrmN/A7FH7uliTs1qfS3+285ZY7YOh/AjWB8JJcTtmPwn3zZVCUx2H4PuM2TnO2s+JPBlH0xRCARypQU3c+DINzSuBrWYcKsL7vBt96EzlSmOz7oNgWhRQiBbCrQfwbSnI6inZmSfVBLLFq4BpUdFWDHn5jXJqqYVpMqwChIhHY/P6gUJ5QWgRxN7Aafg0+gmqqPH71a6DH8QeK2/Z0C1dN4NrdpGFw0VhaRAfYjsEzZlDJq6dMoW0tv+5zmZgbxxQTQHWJ1gA1HWaQOaho9v0cZ2vf+oSbDlcoM/IGTP80vaeulBbhfCGYw0zfhTp9OPUPixHuGGfH7J7Tr/tgQwV3EPNORH+ezOu3BENrL3m5klXVbS+RdRYMeHvQrTsd1zFApP3WzXRnyrqL8htSnuoL1YwWh3KEdlBnV2mQMp0hzXplfVuVJdjNvr9nyPG5a5stvH0RdBajOzKyxreFuIhMyn3h0dvw3Q1A3wHwsKTlPab2gBF2zvv+2298HgscajU4gsnmbvGbAzhAvAFlCLbeFWKpMZ7NAHCUl+lQcK6+9HLIiLA/vu1/O9YKLMhSDe5H9T4/KVlVqIWeE7ad6doxgFcBw/DSaLqXUoZA4r/m8DwZ1VfT60Lft3Z4UIbRYqrRd+HKsh9iFLQImFK7u4obomNuHg6iM87ktYS0MgwYu33xFkrmekVpDln5uHbEzNIBjzO8Sry6aWprHtFFx4x3OKyiU3P5AyX+4CEarA+5y5snyFcIUqZZ5td3eG5EE= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:lhhznOKwIqBB6OSxtXNDmlU8eZEaw/5X/NxtQUGmUlgNMEedytwRWgH1Vuuvsnq+zx4T5Bv+q4/yKCV/8kmMq9+1d2JLaL4nt7qUcAWc75hzwyctuPVR37UVANWYJ3i8Yf6NDjRoI6OtFxyd9p4ElfCwaIaSMSkM45rgN/Rdfvk= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:38.3342 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.3.130 Subject: [Qemu-devel] [PATCH v5 13/13] serial: chardev hotswap support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" for a backend change, a number of ioctls has to be replayed to sync the current setup of a frontend to a backend tty. This is hopefully enough so we don't have to track, store and replay the whole original control byte sequence. Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy --- hw/char/serial.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/hw/char/serial.c b/hw/char/serial.c index e47f0b6..9aec6c6 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -891,9 +891,37 @@ static void serial_reset(void *opaque) s->msr &=3D ~UART_MSR_ANY_DELTA; } =20 +static int serial_be_change(void *opaque) +{ + SerialState *s =3D opaque; + + qemu_chr_fe_set_handlers(&s->chr, serial_can_receive1, serial_receive1, + serial_event, serial_be_change, s, NULL, true= ); + + serial_update_parameters(s); + + qemu_chr_fe_ioctl(&s->chr, CHR_IOCTL_SERIAL_SET_BREAK, + &s->last_break_enable); + + s->poll_msl =3D (s->ier & UART_IER_MSI) ? 1 : 0; + serial_update_msl(s); + + if (s->poll_msl >=3D 0 && !(s->mcr & UART_MCR_LOOP)) { + serial_update_tiocm(s); + } + + if (s->watch_tag > 0) { + g_source_remove(s->watch_tag); + s->watch_tag =3D qemu_chr_fe_add_watch(&s->chr, G_IO_OUT | G_IO_HU= P, + serial_watch_cb, s); + } + + return 0; +} + void serial_realize_core(SerialState *s, Error **errp) { - if (!qemu_chr_fe_get_driver(&s->chr)) { + if (!qemu_chr_fe_backend_connected(&s->chr)) { error_setg(errp, "Can't create serial device, empty char device"); return; } @@ -904,7 +932,7 @@ void serial_realize_core(SerialState *s, Error **errp) qemu_register_reset(serial_reset, s); =20 qemu_chr_fe_set_handlers(&s->chr, serial_can_receive1, serial_receive1, - serial_event, NULL, s, NULL, true); + serial_event, serial_be_change, s, NULL, true= ); fifo8_create(&s->recv_fifo, UART_FIFO_LENGTH); fifo8_create(&s->xmit_fifo, UART_FIFO_LENGTH); serial_reset(s); --=20 2.7.4