{"id":810781,"url":"http://patchwork.ozlabs.org/api/patches/810781/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/1504729728-23279-7-git-send-email-cota@braap.org/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<1504729728-23279-7-git-send-email-cota@braap.org>","list_archive_url":null,"date":"2017-09-06T20:28:48","name":"[RFC,6/6] linux-user: support -plugin option","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"eb499e32e31125d91f3d723522502737b019adac","submitter":{"id":65690,"url":"http://patchwork.ozlabs.org/api/people/65690/?format=json","name":"Emilio Cota","email":"cota@braap.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/1504729728-23279-7-git-send-email-cota@braap.org/mbox/","series":[{"id":1871,"url":"http://patchwork.ozlabs.org/api/series/1871/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=1871","date":"2017-09-06T20:28:45","name":"initial plugin support","version":1,"mbox":"http://patchwork.ozlabs.org/series/1871/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/810781/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/810781/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=braap.org header.i=@braap.org\n\theader.b=\"J3lfqaGu\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=messagingengine.com\n\theader.i=@messagingengine.com header.b=\"b2SZMLjw\"; \n\tdkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xnZzg4M1Cz9t2c\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 06:33:35 +1000 (AEST)","from localhost ([::1]:37684 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dph0v-00054q-Lj\n\tfor incoming@patchwork.ozlabs.org; Wed, 06 Sep 2017 16:33:33 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:53487)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <cota@braap.org>) id 1dpgxU-0002Zl-A5\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 16:30:01 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <cota@braap.org>) id 1dpgxR-00014W-FA\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 16:30:00 -0400","from out1-smtp.messagingengine.com ([66.111.4.25]:52465)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <cota@braap.org>) id 1dpgxR-00013a-Ap\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 16:29:57 -0400","from compute4.internal (compute4.nyi.internal [10.202.2.44])\n\tby mailout.nyi.internal (Postfix) with ESMTP id 376FC2135C;\n\tWed,  6 Sep 2017 16:29:56 -0400 (EDT)","from frontend1 ([10.202.2.160])\n\tby compute4.internal (MEProxy); Wed, 06 Sep 2017 16:29:56 -0400","from localhost (flamenco.cs.columbia.edu [128.59.20.216])\n\tby mail.messagingengine.com (Postfix) with ESMTPA id E901F7E68E;\n\tWed,  6 Sep 2017 16:29:55 -0400 (EDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=braap.org; h=cc\n\t:content-transfer-encoding:content-type:date:from:in-reply-to\n\t:message-id:mime-version:references:subject:to:x-me-sender\n\t:x-me-sender:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=CuUZxpc2+MOssTU\n\tKcsIeePkVSwoD1ldwyN+BjWX4BAw=; b=J3lfqaGuErc21iD4KniiO3+eguwL8jd\n\tL19HnoGfW07Ly/Jc5n1bS8mkyE3LmrONtm0Eg0wafQLDkDvvlyMivD06TEXgKu7G\n\tJ7QZS0YvoH/v6iQCuHd9JJoTZ4H6Z3hrwIl2B9m9jtA5FTSv+I0ARbQo5Ar4mOmR\n\twYAsV8T09gSQ=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=\n\tmessagingengine.com; h=cc:content-transfer-encoding:content-type\n\t:date:from:in-reply-to:message-id:mime-version:references\n\t:subject:to:x-me-sender:x-me-sender:x-sasl-enc:x-sasl-enc; s=\n\tfm1; bh=CuUZxpc2+MOssTUKcsIeePkVSwoD1ldwyN+BjWX4BAw=; b=b2SZMLjw\n\tn1v0XJ0D7wPtqfYv30Ca+6W+DOGiXsIT9EKHX1Aap61fK8vYQKle7wwUjSmCTfQD\n\t1h1KiirZjkxpkpGCQo3ocULP5eHLol83rk0CjbkKYAIJ5qgyeAmnu3s77+sRUjrN\n\tKmabFPdibbRSYK4fYXA9IarsD7lHrLP+zpnDARs8aIiL3uUHPFgl9cCCcky0+DoH\n\tuXboS7v/twy1jRC/JAISOn7/CEzVbbYp1845Q/oFPxrz4/6jgp1w0uf30qSeLJXK\n\tC8SI/NGfjugot44R6jFFOVS/oMyCeLIY1J5zpDdlFw1hdSEPJ1dId/74k6gXCFFZ\n\tnS5hWnspeW5YBg=="],"X-ME-Sender":"<xms:xFqwWWHDLP4jWdOIyGEVwSBMkBMS6k1xux9ByvpbNUGYEXrSS5htSg>","X-Sasl-enc":"jV0FO1X5MXXq0wsfS5RV6yCbq/jBHlqur6TLXMXi5kC/ 1504729795","From":"\"Emilio G. Cota\" <cota@braap.org>","To":"qemu-devel@nongnu.org","Date":"Wed,  6 Sep 2017 16:28:48 -0400","Message-Id":"<1504729728-23279-7-git-send-email-cota@braap.org>","X-Mailer":"git-send-email 2.7.4","In-Reply-To":"<1504729728-23279-1-git-send-email-cota@braap.org>","References":"<1504729728-23279-1-git-send-email-cota@braap.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"66.111.4.25","Subject":"[Qemu-devel] [RFC 6/6] linux-user: support -plugin option","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"=?utf-8?q?Llu=C3=ADs_Vilanova?= <vilanova@ac.upc.edu>,\n\tStefan Hajnoczi <stefanha@redhat.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"},"content":"From: Lluís Vilanova <vilanova@ac.upc.edu>\n\nSigned-off-by: Lluís Vilanova <vilanova@ac.upc.edu>\n[ cota: s/instrument/plugin ]\nSigned-off-by: Emilio G. Cota <cota@braap.org>\n---\n linux-user/main.c | 18 ++++++++++++++++++\n 1 file changed, 18 insertions(+)","diff":"diff --git a/linux-user/main.c b/linux-user/main.c\nindex 31c8f1a..211ee02 100644\n--- a/linux-user/main.c\n+++ b/linux-user/main.c\n@@ -27,6 +27,7 @@\n #include \"qemu/config-file.h\"\n #include \"qemu/cutils.h\"\n #include \"qemu/help_option.h\"\n+#include \"qemu/plugin.h\"\n #include \"cpu.h\"\n #include \"exec/exec-all.h\"\n #include \"tcg.h\"\n@@ -4014,6 +4015,15 @@ static void handle_arg_trace(const char *arg)\n     trace_file = trace_opt_parse(arg);\n }\n \n+static struct qemu_plugin_list plugins = QTAILQ_HEAD_INITIALIZER(plugins);\n+\n+#ifdef CONFIG_PLUGINS\n+static void handle_arg_plugin(const char *arg)\n+{\n+    qemu_plugin_opt_parse(arg, &plugins);\n+}\n+#endif\n+\n struct qemu_argument {\n     const char *argv;\n     const char *env;\n@@ -4063,6 +4073,10 @@ static const struct qemu_argument arg_table[] = {\n      \"\",           \"Seed for pseudo-random number generator\"},\n     {\"trace\",      \"QEMU_TRACE\",       true,  handle_arg_trace,\n      \"\",           \"[[enable=]<pattern>][,events=<file>][,file=<file>]\"},\n+#ifdef CONFIG_PLUGINS\n+    {\"plugin\",     \"QEMU_PLUGIN\",      true,  handle_arg_plugin,\n+     \"\",           \"[file=]<file>[,arg=<string>]\"},\n+#endif\n     {\"version\",    \"QEMU_VERSION\",     false, handle_arg_version,\n      \"\",           \"display version information and exit\"},\n     {NULL, NULL, false, NULL, NULL, NULL}\n@@ -4252,6 +4266,7 @@ int main(int argc, char **argv, char **envp)\n     srand(time(NULL));\n \n     qemu_add_opts(&qemu_trace_opts);\n+    qemu_plugin_add_opts();\n \n     optind = parse_args(argc, argv);\n \n@@ -4259,6 +4274,9 @@ int main(int argc, char **argv, char **envp)\n         exit(1);\n     }\n     trace_init_file(trace_file);\n+    if (qemu_plugin_load_list(&plugins)) {\n+        exit(1);\n+    }\n \n     /* Zero out regs */\n     memset(regs, 0, sizeof(struct target_pt_regs));\n","prefixes":["RFC","6/6"]}