Patch Detail
Show a patch.
GET /api/patches/17580/?format=api
{ "id": 17580, "url": "https://patchwork.libcamera.org/api/patches/17580/?format=api", "web_url": "https://patchwork.libcamera.org/patch/17580/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/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": "<20221011105859.457567-3-paul.elder@ideasonboard.com>", "date": "2022-10-11T10:58:52", "name": "[libcamera-devel,v5,2/9] utils: ipc: Add support for enums in function parameters", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "6b442aac4c81187d7a48a87e97b75cb628217412", "submitter": { "id": 17, "url": "https://patchwork.libcamera.org/api/people/17/?format=api", "name": "Paul Elder", "email": "paul.elder@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/17580/mbox/", "series": [ { "id": 3551, "url": "https://patchwork.libcamera.org/api/series/3551/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3551", "date": "2022-10-11T10:58:50", "name": "utils: ipc: Add support for enums and Flags", "version": 5, "mbox": "https://patchwork.libcamera.org/series/3551/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/17580/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/17580/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 347E8C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 11 Oct 2022 10:59:18 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D75A462D79;\n\tTue, 11 Oct 2022 12:59:17 +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 E739062D4E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 11 Oct 2022 12:59:16 +0200 (CEST)", "from pyrite.rasen.tech (h175-177-042-159.catv02.itscom.jp\n\t[175.177.42.159])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2D2E5143F;\n\tTue, 11 Oct 2022 12:59:14 +0200 (CEST)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1665485957;\n\tbh=KizrgP6O/mGAbSVLFZLKJWcEI65LDo/w8QgFS5JqgOw=;\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=QVhEtJKIK9MeNiXieZpi600wtyJlw/Kqw17C5WOqvqepUldMUEobofCs1OLZIg1qF\n\tw/89MVAWwV+PeYk5hhLFmQjCTMyYSZRp6fu0Niqc2excklKyP2Y/vN1GCXwr9EcYuf\n\tG/8E/s6bEkykjlFjdnw95B9Yd1IZ62XJE1tbuLLDp0L+c7pTPF9kp7ihw8EdIPvpHy\n\tSa/SMUuZVBApQf0NRT3V6ZUhVDtbxR6wS2Z8hi8fTYvfl+iGHQjj+cHjcjeRUeUUP8\n\tq1sC2Bg+YIKqA8Gwa7RVQZZZ6S5OEhLlLyfFwZ92HSnQoFgr/M/99jpMEL9QQPparL\n\tuxSq99p83m6dw==", "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1665485956;\n\tbh=KizrgP6O/mGAbSVLFZLKJWcEI65LDo/w8QgFS5JqgOw=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=H0VsiKH9Bi8DqzlvRi50nEvldd9LQvjuLWO/l7J/iEyR0f18T0FDrLfwZllNyRFji\n\tqyBu+jQMghrOKU0a8+7GJyQZ+i7Ta5Y3pCWsZ3hO+fl9Oes8OiSskRXUskIPL1jNuF\n\tbNklv0+HIMG8mslJjalqz65FzY8SI5zU4qpN/BuE=" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"H0VsiKH9\"; dkim-atps=neutral", "To": "libcamera-devel@lists.libcamera.org", "Date": "Tue, 11 Oct 2022 19:58:52 +0900", "Message-Id": "<20221011105859.457567-3-paul.elder@ideasonboard.com>", "X-Mailer": "git-send-email 2.30.2", "In-Reply-To": "<20221011105859.457567-1-paul.elder@ideasonboard.com>", "References": "<20221011105859.457567-1-paul.elder@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v5 2/9] 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 v5\n\nNo change in v4\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", "v5", "2/9" ] }