[{"id":21319,"web_url":"https://patchwork.libcamera.org/comment/21319/","msgid":"<CAO5uPHOAuT098H-yJz9RE2G6_W+ri6BMYLZ8=W7t=TBsn_EjnQ@mail.gmail.com>","date":"2021-11-29T13:45:49","subject":"Re: [libcamera-devel] [PATCH v3 06/17] libcamera: base:\n\tfile_descriptor: Add constructor from UniqueFD","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Laurent, thank you for the patch.\n\nOn Mon, Nov 29, 2021 at 8:58 AM Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> From: Hirokazu Honda <hiroh@chromium.org>\n>\n> Add a FileDescriptor constructor that takes a UniqueFD, transfering\n> ownership of the file descriptor to the FileDescriptor.\n>\n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\n\n> ---\n> Changes since v2:\n>\n> - Pass UniqueFD by value\n> ---\n>  include/libcamera/base/file_descriptor.h |  3 +++\n>  src/libcamera/base/file_descriptor.cpp   | 13 +++++++++++++\n>  2 files changed, 16 insertions(+)\n>\n> diff --git a/include/libcamera/base/file_descriptor.h b/include/libcamera/base/file_descriptor.h\n> index 5d1594e80801..74292eba04f5 100644\n> --- a/include/libcamera/base/file_descriptor.h\n> +++ b/include/libcamera/base/file_descriptor.h\n> @@ -11,11 +11,14 @@\n>\n>  namespace libcamera {\n>\n> +class UniqueFD;\n> +\n>  class FileDescriptor final\n>  {\n>  public:\n>         explicit FileDescriptor(const int &fd = -1);\n>         explicit FileDescriptor(int &&fd);\n> +       explicit FileDescriptor(UniqueFD fd);\n>         FileDescriptor(const FileDescriptor &other);\n>         FileDescriptor(FileDescriptor &&other);\n>         ~FileDescriptor();\n> diff --git a/src/libcamera/base/file_descriptor.cpp b/src/libcamera/base/file_descriptor.cpp\n> index 98d4b4bfd24f..da696b2501cd 100644\n> --- a/src/libcamera/base/file_descriptor.cpp\n> +++ b/src/libcamera/base/file_descriptor.cpp\n> @@ -13,6 +13,7 @@\n>  #include <utility>\n>\n>  #include <libcamera/base/log.h>\n> +#include <libcamera/base/unique_fd.h>\n>\n>  /**\n>   * \\file base/file_descriptor.h\n> @@ -109,6 +110,18 @@ FileDescriptor::FileDescriptor(int &&fd)\n>         fd = -1;\n>  }\n>\n> +/**\n> + * \\brief Create a FileDescriptor taking ownership of a given UniqueFD \\a fd\n> + * \\param[in] fd UniqueFD\n> + *\n> + * Construct a FileDescriptor from UniqueFD by taking ownership of the \\a fd.\n> + * The original \\a fd becomes invalid.\n> + */\n> +FileDescriptor::FileDescriptor(UniqueFD fd)\n> +       : FileDescriptor(fd.release())\n> +{\n> +}\n> +\n>  /**\n>   * \\brief Copy constructor, create a FileDescriptor from a copy of \\a other\n>   * \\param[in] other The other FileDescriptor\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","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 9FF19BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 29 Nov 2021 13:46:03 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EB762605A4;\n\tMon, 29 Nov 2021 14:46:02 +0100 (CET)","from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com\n\t[IPv6:2a00:1450:4864:20::52d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 89E1C60592\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 29 Nov 2021 14:46:01 +0100 (CET)","by mail-ed1-x52d.google.com with SMTP id r11so72181560edd.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 29 Nov 2021 05:46:01 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"QkMfUKyE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=+PhBOpq/gX90jDnonddobrqvcHi3T6nuKpE2BADz6ZQ=;\n\tb=QkMfUKyECwbRaD3hA401DjYrXuj1O765MIVSV7+OecxSOVa4kDIB1/MZO84brKoONa\n\tFt79KWmI2r7A3scaQ+vNwnIckb5gBnDrnhzo63etkGRqwrIokPEF2hBzYPYD2Lq8Ei53\n\tQ//kdmy0mQ6LTg4N2OjxBft175o479FdCLnpM=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=+PhBOpq/gX90jDnonddobrqvcHi3T6nuKpE2BADz6ZQ=;\n\tb=N09+UqBoygPwvQkiaCUAv1MIaBBO+l7P/X/peep4SPrSuK0MwGAIzHGHLjG58FH4D1\n\tVy4KkdnX1QTLyTeNIjYJ2wXjLvRMBkcjrlE30iaV+6odXVlUKJdslz4awi44wWGs0Tto\n\tG+JIlr/F3aGsU3w44ov7zwfnHMXzQE0JbW5n2I6exSiop6W01I6CnyZdxSdSpLkcUi8B\n\t4x6ryPoyk5wPByrN+8iE78HuQEyPZDWhi3P/0acSsr8XmGodpgI456ZuDeNgVwEIG1Wt\n\t7b+iRxYilsPEYQHddxXYvhzhm1iKL5Q2e7fV6c9I7PonI4bqbAQ2ws2MJ4Zlwe8j+lyt\n\tqrog==","X-Gm-Message-State":"AOAM5338CR4+RKUYdTp46tnhtKyO6wCBmy2kCqEwgqux4pkQmAhmBwuV\n\t4n0zMJnI4auuNQmv1efn44Z1+k8h78EpvtfY1ap/BPenbCQ=","X-Google-Smtp-Source":"ABdhPJy0g+xooAWutGckaT7g4rVuxoUGsZc5DY4ZI9a++KvZGGiE4G/8VwRZ+QkgvRy8yUKL4qIzus1nY6KkJV95Boo=","X-Received":"by 2002:aa7:c406:: with SMTP id j6mr76019482edq.76.1638193561080;\n\tMon, 29 Nov 2021 05:46:01 -0800 (PST)","MIME-Version":"1.0","References":"<20211128235752.10836-1-laurent.pinchart@ideasonboard.com>\n\t<20211128235752.10836-7-laurent.pinchart@ideasonboard.com>","In-Reply-To":"<20211128235752.10836-7-laurent.pinchart@ideasonboard.com>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Mon, 29 Nov 2021 22:45:49 +0900","Message-ID":"<CAO5uPHOAuT098H-yJz9RE2G6_W+ri6BMYLZ8=W7t=TBsn_EjnQ@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH v3 06/17] libcamera: base:\n\tfile_descriptor: Add constructor from UniqueFD","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21335,"web_url":"https://patchwork.libcamera.org/comment/21335/","msgid":"<20211129150824.2gnf4un2zkyqucu4@uno.localdomain>","date":"2021-11-29T15:08:24","subject":"Re: [libcamera-devel] [PATCH v3 06/17] libcamera: base:\n\tfile_descriptor: Add constructor from UniqueFD","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent\n\nOn Mon, Nov 29, 2021 at 01:57:41AM +0200, Laurent Pinchart wrote:\n> From: Hirokazu Honda <hiroh@chromium.org>\n>\n> Add a FileDescriptor constructor that takes a UniqueFD, transfering\n> ownership of the file descriptor to the FileDescriptor.\n>\n\nIs this a good idea ? Can shared_ptr<>(unique_ptr<>) ?\n\n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n> Changes since v2:\n>\n> - Pass UniqueFD by value\n> ---\n>  include/libcamera/base/file_descriptor.h |  3 +++\n>  src/libcamera/base/file_descriptor.cpp   | 13 +++++++++++++\n>  2 files changed, 16 insertions(+)\n>\n> diff --git a/include/libcamera/base/file_descriptor.h b/include/libcamera/base/file_descriptor.h\n> index 5d1594e80801..74292eba04f5 100644\n> --- a/include/libcamera/base/file_descriptor.h\n> +++ b/include/libcamera/base/file_descriptor.h\n> @@ -11,11 +11,14 @@\n>\n>  namespace libcamera {\n>\n> +class UniqueFD;\n> +\n>  class FileDescriptor final\n>  {\n>  public:\n>  \texplicit FileDescriptor(const int &fd = -1);\n>  \texplicit FileDescriptor(int &&fd);\n> +\texplicit FileDescriptor(UniqueFD fd);\n>  \tFileDescriptor(const FileDescriptor &other);\n>  \tFileDescriptor(FileDescriptor &&other);\n>  \t~FileDescriptor();\n> diff --git a/src/libcamera/base/file_descriptor.cpp b/src/libcamera/base/file_descriptor.cpp\n> index 98d4b4bfd24f..da696b2501cd 100644\n> --- a/src/libcamera/base/file_descriptor.cpp\n> +++ b/src/libcamera/base/file_descriptor.cpp\n> @@ -13,6 +13,7 @@\n>  #include <utility>\n>\n>  #include <libcamera/base/log.h>\n> +#include <libcamera/base/unique_fd.h>\n>\n>  /**\n>   * \\file base/file_descriptor.h\n> @@ -109,6 +110,18 @@ FileDescriptor::FileDescriptor(int &&fd)\n>  \tfd = -1;\n>  }\n>\n> +/**\n> + * \\brief Create a FileDescriptor taking ownership of a given UniqueFD \\a fd\n> + * \\param[in] fd UniqueFD\n> + *\n> + * Construct a FileDescriptor from UniqueFD by taking ownership of the \\a fd.\n> + * The original \\a fd becomes invalid.\n> + */\n> +FileDescriptor::FileDescriptor(UniqueFD fd)\n> +\t: FileDescriptor(fd.release())\n> +{\n> +}\n> +\n>  /**\n>   * \\brief Copy constructor, create a FileDescriptor from a copy of \\a other\n>   * \\param[in] other The other FileDescriptor\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","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 006A8BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 29 Nov 2021 15:07:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BB0EC605A5;\n\tMon, 29 Nov 2021 16:07:33 +0100 (CET)","from relay11.mail.gandi.net (relay11.mail.gandi.net\n\t[217.70.178.231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AEF256059E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 29 Nov 2021 16:07:32 +0100 (CET)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay11.mail.gandi.net (Postfix) with ESMTPSA id 426CD100008;\n\tMon, 29 Nov 2021 15:07:31 +0000 (UTC)"],"Date":"Mon, 29 Nov 2021 16:08:24 +0100","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20211129150824.2gnf4un2zkyqucu4@uno.localdomain>","References":"<20211128235752.10836-1-laurent.pinchart@ideasonboard.com>\n\t<20211128235752.10836-7-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20211128235752.10836-7-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v3 06/17] libcamera: base:\n\tfile_descriptor: Add constructor from UniqueFD","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21354,"web_url":"https://patchwork.libcamera.org/comment/21354/","msgid":"<YaUDKYYI4BSp9Ecu@pendragon.ideasonboard.com>","date":"2021-11-29T16:43:21","subject":"Re: [libcamera-devel] [PATCH v3 06/17] libcamera: base:\n\tfile_descriptor: Add constructor from UniqueFD","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn Mon, Nov 29, 2021 at 04:08:24PM +0100, Jacopo Mondi wrote:\n> On Mon, Nov 29, 2021 at 01:57:41AM +0200, Laurent Pinchart wrote:\n> > From: Hirokazu Honda <hiroh@chromium.org>\n> >\n> > Add a FileDescriptor constructor that takes a UniqueFD, transfering\n> > ownership of the file descriptor to the FileDescriptor.\n> \n> Is this a good idea ? Can shared_ptr<>(unique_ptr<>) ?\n\nFor the second question, yes, see constructor 13 in\nhttps://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr. For the\nfirst question, I think so, but we can discuss it :-)\n\n> > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> > Changes since v2:\n> >\n> > - Pass UniqueFD by value\n> > ---\n> >  include/libcamera/base/file_descriptor.h |  3 +++\n> >  src/libcamera/base/file_descriptor.cpp   | 13 +++++++++++++\n> >  2 files changed, 16 insertions(+)\n> >\n> > diff --git a/include/libcamera/base/file_descriptor.h b/include/libcamera/base/file_descriptor.h\n> > index 5d1594e80801..74292eba04f5 100644\n> > --- a/include/libcamera/base/file_descriptor.h\n> > +++ b/include/libcamera/base/file_descriptor.h\n> > @@ -11,11 +11,14 @@\n> >\n> >  namespace libcamera {\n> >\n> > +class UniqueFD;\n> > +\n> >  class FileDescriptor final\n> >  {\n> >  public:\n> >  \texplicit FileDescriptor(const int &fd = -1);\n> >  \texplicit FileDescriptor(int &&fd);\n> > +\texplicit FileDescriptor(UniqueFD fd);\n> >  \tFileDescriptor(const FileDescriptor &other);\n> >  \tFileDescriptor(FileDescriptor &&other);\n> >  \t~FileDescriptor();\n> > diff --git a/src/libcamera/base/file_descriptor.cpp b/src/libcamera/base/file_descriptor.cpp\n> > index 98d4b4bfd24f..da696b2501cd 100644\n> > --- a/src/libcamera/base/file_descriptor.cpp\n> > +++ b/src/libcamera/base/file_descriptor.cpp\n> > @@ -13,6 +13,7 @@\n> >  #include <utility>\n> >\n> >  #include <libcamera/base/log.h>\n> > +#include <libcamera/base/unique_fd.h>\n> >\n> >  /**\n> >   * \\file base/file_descriptor.h\n> > @@ -109,6 +110,18 @@ FileDescriptor::FileDescriptor(int &&fd)\n> >  \tfd = -1;\n> >  }\n> >\n> > +/**\n> > + * \\brief Create a FileDescriptor taking ownership of a given UniqueFD \\a fd\n> > + * \\param[in] fd UniqueFD\n> > + *\n> > + * Construct a FileDescriptor from UniqueFD by taking ownership of the \\a fd.\n> > + * The original \\a fd becomes invalid.\n> > + */\n> > +FileDescriptor::FileDescriptor(UniqueFD fd)\n> > +\t: FileDescriptor(fd.release())\n> > +{\n> > +}\n> > +\n> >  /**\n> >   * \\brief Copy constructor, create a FileDescriptor from a copy of \\a other\n> >   * \\param[in] other The other FileDescriptor","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 EE59DBDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 29 Nov 2021 16:43:47 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 25BB7605A4;\n\tMon, 29 Nov 2021 17:43:47 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CAD4160592\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 29 Nov 2021 17:43:45 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 481922A5;\n\tMon, 29 Nov 2021 17:43:45 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"a9sRx5oU\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1638204225;\n\tbh=tSMTZARS5N/DKIxlWR9Yqe722rlAefpTYJ0vbjOzUXU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=a9sRx5oUEhcq11ms1KD2Ud95dQqlnwbtstWVvtcs1QTAOIjPLQaN0rurFVEsblbfy\n\te4ah5BJZtMumT7Iqt7uCLsXzvaXrTxiyXY9z8Lp3iJnFO43GgVtDMWMFWHM3kHm1Qf\n\twfE+zh5Rps5mUFaRVqN7vod92PabcmVoj2E0kRow=","Date":"Mon, 29 Nov 2021 18:43:21 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<YaUDKYYI4BSp9Ecu@pendragon.ideasonboard.com>","References":"<20211128235752.10836-1-laurent.pinchart@ideasonboard.com>\n\t<20211128235752.10836-7-laurent.pinchart@ideasonboard.com>\n\t<20211129150824.2gnf4un2zkyqucu4@uno.localdomain>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20211129150824.2gnf4un2zkyqucu4@uno.localdomain>","Subject":"Re: [libcamera-devel] [PATCH v3 06/17] libcamera: base:\n\tfile_descriptor: Add constructor from UniqueFD","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21364,"web_url":"https://patchwork.libcamera.org/comment/21364/","msgid":"<20211129172335.hla4xmojuozxcm7e@uno.localdomain>","date":"2021-11-29T17:23:35","subject":"Re: [libcamera-devel] [PATCH v3 06/17] libcamera: base:\n\tfile_descriptor: Add constructor from UniqueFD","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent,\n\nOn Mon, Nov 29, 2021 at 06:43:21PM +0200, Laurent Pinchart wrote:\n> Hi Jacopo,\n>\n> On Mon, Nov 29, 2021 at 04:08:24PM +0100, Jacopo Mondi wrote:\n> > On Mon, Nov 29, 2021 at 01:57:41AM +0200, Laurent Pinchart wrote:\n> > > From: Hirokazu Honda <hiroh@chromium.org>\n> > >\n> > > Add a FileDescriptor constructor that takes a UniqueFD, transfering\n> > > ownership of the file descriptor to the FileDescriptor.\n> >\n> > Is this a good idea ? Can shared_ptr<>(unique_ptr<>) ?\n>\n> For the second question, yes, see constructor 13 in\n> https://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr. For the\n> first question, I think so, but we can discuss it :-)\n>\n\nOk then :)\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\n\n> > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > ---\n> > > Changes since v2:\n> > >\n> > > - Pass UniqueFD by value\n> > > ---\n> > >  include/libcamera/base/file_descriptor.h |  3 +++\n> > >  src/libcamera/base/file_descriptor.cpp   | 13 +++++++++++++\n> > >  2 files changed, 16 insertions(+)\n> > >\n> > > diff --git a/include/libcamera/base/file_descriptor.h b/include/libcamera/base/file_descriptor.h\n> > > index 5d1594e80801..74292eba04f5 100644\n> > > --- a/include/libcamera/base/file_descriptor.h\n> > > +++ b/include/libcamera/base/file_descriptor.h\n> > > @@ -11,11 +11,14 @@\n> > >\n> > >  namespace libcamera {\n> > >\n> > > +class UniqueFD;\n> > > +\n> > >  class FileDescriptor final\n> > >  {\n> > >  public:\n> > >  \texplicit FileDescriptor(const int &fd = -1);\n> > >  \texplicit FileDescriptor(int &&fd);\n> > > +\texplicit FileDescriptor(UniqueFD fd);\n> > >  \tFileDescriptor(const FileDescriptor &other);\n> > >  \tFileDescriptor(FileDescriptor &&other);\n> > >  \t~FileDescriptor();\n> > > diff --git a/src/libcamera/base/file_descriptor.cpp b/src/libcamera/base/file_descriptor.cpp\n> > > index 98d4b4bfd24f..da696b2501cd 100644\n> > > --- a/src/libcamera/base/file_descriptor.cpp\n> > > +++ b/src/libcamera/base/file_descriptor.cpp\n> > > @@ -13,6 +13,7 @@\n> > >  #include <utility>\n> > >\n> > >  #include <libcamera/base/log.h>\n> > > +#include <libcamera/base/unique_fd.h>\n> > >\n> > >  /**\n> > >   * \\file base/file_descriptor.h\n> > > @@ -109,6 +110,18 @@ FileDescriptor::FileDescriptor(int &&fd)\n> > >  \tfd = -1;\n> > >  }\n> > >\n> > > +/**\n> > > + * \\brief Create a FileDescriptor taking ownership of a given UniqueFD \\a fd\n> > > + * \\param[in] fd UniqueFD\n> > > + *\n> > > + * Construct a FileDescriptor from UniqueFD by taking ownership of the \\a fd.\n> > > + * The original \\a fd becomes invalid.\n> > > + */\n> > > +FileDescriptor::FileDescriptor(UniqueFD fd)\n> > > +\t: FileDescriptor(fd.release())\n> > > +{\n> > > +}\n> > > +\n> > >  /**\n> > >   * \\brief Copy constructor, create a FileDescriptor from a copy of \\a other\n> > >   * \\param[in] other The other FileDescriptor\n>\n> --\n> Regards,\n>\n> Laurent Pinchart","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 24769BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 29 Nov 2021 17:22:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D77A26059E;\n\tMon, 29 Nov 2021 18:22:44 +0100 (CET)","from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net\n\t[217.70.183.198])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6067D60592\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 29 Nov 2021 18:22:43 +0100 (CET)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay6-d.mail.gandi.net (Postfix) with ESMTPSA id DEDB6C000C;\n\tMon, 29 Nov 2021 17:22:42 +0000 (UTC)"],"Date":"Mon, 29 Nov 2021 18:23:35 +0100","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20211129172335.hla4xmojuozxcm7e@uno.localdomain>","References":"<20211128235752.10836-1-laurent.pinchart@ideasonboard.com>\n\t<20211128235752.10836-7-laurent.pinchart@ideasonboard.com>\n\t<20211129150824.2gnf4un2zkyqucu4@uno.localdomain>\n\t<YaUDKYYI4BSp9Ecu@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<YaUDKYYI4BSp9Ecu@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v3 06/17] libcamera: base:\n\tfile_descriptor: Add constructor from UniqueFD","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]