[libcamera-devel] [PATCH v3 06/17] libcamera: base: file_descriptor: Add constructor from UniqueFD

Hirokazu Honda hiroh at chromium.org
Mon Nov 29 14:45:49 CET 2021


Hi Laurent, thank you for the patch.

On Mon, Nov 29, 2021 at 8:58 AM Laurent Pinchart
<laurent.pinchart at ideasonboard.com> wrote:
>
> From: Hirokazu Honda <hiroh at chromium.org>
>
> Add a FileDescriptor constructor that takes a UniqueFD, transfering
> ownership of the file descriptor to the FileDescriptor.
>
> Signed-off-by: Hirokazu Honda <hiroh at chromium.org>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Hirokazu Honda <hiroh at chromium.org>

> ---
> Changes since v2:
>
> - Pass UniqueFD by value
> ---
>  include/libcamera/base/file_descriptor.h |  3 +++
>  src/libcamera/base/file_descriptor.cpp   | 13 +++++++++++++
>  2 files changed, 16 insertions(+)
>
> diff --git a/include/libcamera/base/file_descriptor.h b/include/libcamera/base/file_descriptor.h
> index 5d1594e80801..74292eba04f5 100644
> --- a/include/libcamera/base/file_descriptor.h
> +++ b/include/libcamera/base/file_descriptor.h
> @@ -11,11 +11,14 @@
>
>  namespace libcamera {
>
> +class UniqueFD;
> +
>  class FileDescriptor final
>  {
>  public:
>         explicit FileDescriptor(const int &fd = -1);
>         explicit FileDescriptor(int &&fd);
> +       explicit FileDescriptor(UniqueFD fd);
>         FileDescriptor(const FileDescriptor &other);
>         FileDescriptor(FileDescriptor &&other);
>         ~FileDescriptor();
> diff --git a/src/libcamera/base/file_descriptor.cpp b/src/libcamera/base/file_descriptor.cpp
> index 98d4b4bfd24f..da696b2501cd 100644
> --- a/src/libcamera/base/file_descriptor.cpp
> +++ b/src/libcamera/base/file_descriptor.cpp
> @@ -13,6 +13,7 @@
>  #include <utility>
>
>  #include <libcamera/base/log.h>
> +#include <libcamera/base/unique_fd.h>
>
>  /**
>   * \file base/file_descriptor.h
> @@ -109,6 +110,18 @@ FileDescriptor::FileDescriptor(int &&fd)
>         fd = -1;
>  }
>
> +/**
> + * \brief Create a FileDescriptor taking ownership of a given UniqueFD \a fd
> + * \param[in] fd UniqueFD
> + *
> + * Construct a FileDescriptor from UniqueFD by taking ownership of the \a fd.
> + * The original \a fd becomes invalid.
> + */
> +FileDescriptor::FileDescriptor(UniqueFD fd)
> +       : FileDescriptor(fd.release())
> +{
> +}
> +
>  /**
>   * \brief Copy constructor, create a FileDescriptor from a copy of \a other
>   * \param[in] other The other FileDescriptor
> --
> Regards,
>
> Laurent Pinchart
>


More information about the libcamera-devel mailing list