Patch Detail
Show a patch.
GET /api/1.1/patches/17208/?format=api
{ "id": 17208, "url": "https://patchwork.libcamera.org/api/1.1/patches/17208/?format=api", "web_url": "https://patchwork.libcamera.org/patch/17208/", "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": "<20220826154419.4099372-3-paul.elder@ideasonboard.com>", "date": "2022-08-26T15:44:14", "name": "[libcamera-devel,v3,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/17208/mbox/", "series": [ { "id": 3438, "url": "https://patchwork.libcamera.org/api/1.1/series/3438/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3438", "date": "2022-08-26T15:44:12", "name": "utils: ipc: Add support for enums and Flags", "version": 3, "mbox": "https://patchwork.libcamera.org/series/3438/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/17208/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/17208/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 BE7FFC0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Aug 2022 15:44:36 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 36DD661FCA;\n\tFri, 26 Aug 2022 17:44:36 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 90E7E61FBB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Aug 2022 17:44:32 +0200 (CEST)", "from pyrite.mediacom.info (unknown\n\t[IPv6:2604:2d80:ad8a:9000:1bf9:855b:22de:3645])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 850B62B3;\n\tFri, 26 Aug 2022 17:44:31 +0200 (CEST)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1661528676;\n\tbh=IxFSiWGSzsiGxLtILB+AtR6jLdWwt4vkvdZm+aOgHII=;\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=I2//k/zkwdlsA4Nnunofnu3cpIsQEXgSRpnoIF/io684Ev3vAZ5xVlutDvmLR5Imr\n\tCqhph3YWRfJFt6/OnvWKjzHOePGXeyiTRfS6KFvdrrAjnu8V62QGHR84fPomIVYMHa\n\tPkmJYeB/yioCOXO15DSV4TEjlQ6/m5hpU+WiMpYojScIoH5Kfz6HWs8c1ObFojn9Oz\n\tHSbGEI/No1kgERRKbkGBVbxwoHaZ1sZdXD5MxAvCHgpR9GPuAc5UnLd8S8AhQaEYsX\n\tTC4OWJW+xFqEFVtwID7air08I4Ns8Vuoj8GXZ9RHnjIsWqKmb7JJ6fLSLeiVVIyM7F\n\tZdUvkXhn/SJsQ==", "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1661528672;\n\tbh=IxFSiWGSzsiGxLtILB+AtR6jLdWwt4vkvdZm+aOgHII=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=fzNRvpXsxb064MJP/fzOzxZvz4FIkO+yqbR/QDC09IW02XrPXl6t050ED8lsNFQ0F\n\t1TOnWs50SARLBYlnZhH35uR/oE3xjnKBaIlRxN/H1YfASlXRAJ06YTvX/x3NxE62EC\n\t3DtU1AIiLjIeLzVP6IfxKeafj7LzdIAj+YGDl79g=" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"fzNRvpXs\"; dkim-atps=neutral", "To": "libcamera-devel@lists.libcamera.org", "Date": "Fri, 26 Aug 2022 10:44:14 -0500", "Message-Id": "<20220826154419.4099372-3-paul.elder@ideasonboard.com>", "X-Mailer": "git-send-email 2.30.2", "In-Reply-To": "<20220826154419.4099372-1-paul.elder@ideasonboard.com>", "References": "<20220826154419.4099372-1-paul.elder@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v3 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---\nNo change in v3\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", "v3", "2/7" ] }