Patch Detail
Show a patch.
GET /api/1.1/patches/17148/?format=api
{ "id": 17148, "url": "https://patchwork.libcamera.org/api/1.1/patches/17148/?format=api", "web_url": "https://patchwork.libcamera.org/patch/17148/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20220818064923.2573060-3-paul.elder@ideasonboard.com>", "date": "2022-08-18T06:49:17", "name": "[libcamera-devel,v2,2/7] utils: ipc: Add support for enums in function parameters", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "6b442aac4c81187d7a48a87e97b75cb628217412", "submitter": { "id": 17, "url": "https://patchwork.libcamera.org/api/1.1/people/17/?format=api", "name": "Paul Elder", "email": "paul.elder@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/17148/mbox/", "series": [ { "id": 3424, "url": "https://patchwork.libcamera.org/api/1.1/series/3424/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3424", "date": "2022-08-18T06:49:15", "name": "utils: ipc: Add support for enums and Flags", "version": 2, "mbox": "https://patchwork.libcamera.org/series/3424/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/17148/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/17148/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id A6FF1C3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 18 Aug 2022 06:49:41 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7049D61FC6;\n\tThu, 18 Aug 2022 08:49:41 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5B87661FA3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 18 Aug 2022 08:49:40 +0200 (CEST)", "from pyrite.rasen.tech (KD027085204050.au-net.ne.jp [27.85.204.50])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 96B5E4A8;\n\tThu, 18 Aug 2022 08:49:38 +0200 (CEST)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1660805381;\n\tbh=FPxIVhUWlgSwS6C9jBbIlUYDOVAkWvM8Y63TJdGGpt8=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=YLNjclYl6KSpOCWQ218sSTJGhEROJmAryCZqtBnV8JrrK2JxWgvAz6r3ReaI742T0\n\tY9yw5gVhGJYP6/9JfKmU6fgV/TT9L3itX0XsIRynYE1hg7tpa3cdYCyectI/xeXeeJ\n\tVkZhJZ/ibaMI2NQexCYfM3sXx41UMVxzRQ6r776VEUsjzgCA0UkDW98aqaiI7n15nF\n\ttCHY36WltZ16/xUHJ6PTulTi6q6dimEiv4iPWgDEsyENBOhiHgF3QvxM0znPc/pCus\n\tfKE7xZR7azxZOEv8etwKmQzTMrVls3CIR1Grk9u4f6cVEt8BNM9FJQt67AzNksmxqE\n\t6gapk9L794XUA==", "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1660805380;\n\tbh=FPxIVhUWlgSwS6C9jBbIlUYDOVAkWvM8Y63TJdGGpt8=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=RuSuQ56DmNFrgpDQKme9KWEmGbGTAzKJPYLROqlEdNElTVcqno4+np0dqnjBKQUuw\n\tTYIxipzUGl1VxTEw2HA3rXHl0cqV2v036mq3vBYS4IiSvSciKgy8jknvld/a6RRreS\n\tpmZNWivFMmSTTPbKFZLRC2AwADSBXeHk9rPkyYS0=" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"RuSuQ56D\"; dkim-atps=neutral", "To": "libcamera-devel@lists.libcamera.org", "Date": "Thu, 18 Aug 2022 15:49:17 +0900", "Message-Id": "<20220818064923.2573060-3-paul.elder@ideasonboard.com>", "X-Mailer": "git-send-email 2.30.2", "In-Reply-To": "<20220818064923.2573060-1-paul.elder@ideasonboard.com>", "References": "<20220818064923.2573060-1-paul.elder@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v2 2/7] utils: ipc: Add support for enums\n\tin function parameters", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "From": "Paul Elder via libcamera-devel <libcamera-devel@lists.libcamera.org>", "Reply-To": "Paul Elder <paul.elder@ideasonboard.com>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "There is already support for enums as struct members, but there was no\nsupport for enums in function parameters. Add it.\n\nThis does not add support for returning enums as direct return values.\n\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n---\nChanges in v2:\n- add static assertion to confirm that the enum type fits in int32_t\n---\n .../libcamera_templates/proxy_functions.tmpl | 16 ++++++++++++++--\n 1 file changed, 14 insertions(+), 2 deletions(-)", "diff": "diff --git a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl\nindex bac826a7..cbcfb64a 100644\n--- a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl\n+++ b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl\n@@ -52,6 +52,9 @@\n #}\n {%- macro serialize_call(params, buf, fds) %}\n {%- for param in params %}\n+{%- if param|is_enum %}\n+\tstatic_assert(sizeof({{param|name_full}}) <= 4);\n+{%- endif %}\n \tstd::vector<uint8_t> {{param.mojom_name}}Buf;\n {%- if param|has_fd %}\n \tstd::vector<SharedFD> {{param.mojom_name}}Fds;\n@@ -59,7 +62,11 @@\n {%- else %}\n \tstd::tie({{param.mojom_name}}Buf, std::ignore) =\n {%- endif %}\n+{%- if param|is_enum %}\n+\t\tIPADataSerializer<uint32_t>::serialize(static_cast<uint32_t>({{param.mojom_name}})\n+{%- else %}\n \t\tIPADataSerializer<{{param|name}}>::serialize({{param.mojom_name}}\n+{% endif -%}\n {{- \", &controlSerializer_\" if param|needs_control_serializer -}}\n );\n {%- endfor %}\n@@ -97,7 +104,12 @@\n # This code is meant to be used by macro deserialize_call.\n #}\n {%- macro deserialize_param(param, pointer, loop, buf, fds, iter, data_size) -%}\n-{{\"*\" if pointer}}{{param.mojom_name}} = IPADataSerializer<{{param|name}}>::deserialize(\n+{{\"*\" if pointer}}{{param.mojom_name}} =\n+{%- if param|is_enum %}\n+static_cast<{{param|name_full}}>(IPADataSerializer<uint32_t>::deserialize(\n+{%- else %}\n+IPADataSerializer<{{param|name}}>::deserialize(\n+{%- endif %}\n \t{{buf}}{{- \".cbegin()\" if not iter}} + {{param.mojom_name}}Start,\n {%- if loop.last and not iter %}\n \t{{buf}}.cend()\n@@ -121,7 +133,7 @@\n {%- if param|needs_control_serializer %}\n \t&controlSerializer_\n {%- endif -%}\n-);\n+){{\")\" if param|is_enum}};\n {%- endmacro -%}\n \n \n", "prefixes": [ "libcamera-devel", "v2", "2/7" ] }