From b304bc013ef8022131ef0a146f20c6bad7ac45d5 Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Wed, 16 Jun 2021 10:34:07 +0100 Subject: libcamera/base: Move File to base library The File abstraction is a base helper and not part of the libcamera API. Move it to to allow usage by users of the base library. Reviewed-by: Hirokazu Honda Reviewed-by: Paul Elder Reviewed-by: Laurent Pinchart Signed-off-by: Kieran Bingham --- include/libcamera/base/file.h | 79 ++++++++++++++++++++++++++++++++++ include/libcamera/base/meson.build | 1 + include/libcamera/internal/file.h | 78 --------------------------------- include/libcamera/internal/meson.build | 1 - 4 files changed, 80 insertions(+), 79 deletions(-) create mode 100644 include/libcamera/base/file.h delete mode 100644 include/libcamera/internal/file.h (limited to 'include') diff --git a/include/libcamera/base/file.h b/include/libcamera/base/file.h new file mode 100644 index 00000000..5cd98579 --- /dev/null +++ b/include/libcamera/base/file.h @@ -0,0 +1,79 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* + * Copyright (C) 2020, Google Inc. + * + * file.h - File I/O operations + */ +#ifndef __LIBCAMERA_BASE_FILE_H__ +#define __LIBCAMERA_BASE_FILE_H__ + +#include + +#include +#include + +#include + +#include + +namespace libcamera { + +class File +{ +public: + enum MapFlag { + MapNoOption = 0, + MapPrivate = (1 << 0), + }; + + enum OpenMode { + NotOpen = 0, + ReadOnly = (1 << 0), + WriteOnly = (1 << 1), + ReadWrite = ReadOnly | WriteOnly, + }; + + File(const std::string &name); + File(); + ~File(); + + const std::string &fileName() const { return name_; } + void setFileName(const std::string &name); + bool exists() const; + + bool open(OpenMode mode); + bool isOpen() const { return fd_ != -1; } + OpenMode openMode() const { return mode_; } + void close(); + + int error() const { return error_; } + ssize_t size() const; + + off_t pos() const; + off_t seek(off_t pos); + + ssize_t read(const Span &data); + ssize_t write(const Span &data); + + Span map(off_t offset = 0, ssize_t size = -1, + MapFlag flags = MapNoOption); + bool unmap(uint8_t *addr); + + static bool exists(const std::string &name); + +private: + LIBCAMERA_DISABLE_COPY(File) + + void unmapAll(); + + std::string name_; + int fd_; + OpenMode mode_; + + int error_; + std::map maps_; +}; + +} /* namespace libcamera */ + +#endif /* __LIBCAMERA_BASE_FILE_H__ */ diff --git a/include/libcamera/base/meson.build b/include/libcamera/base/meson.build index 7a858dcb..6fc6c138 100644 --- a/include/libcamera/base/meson.build +++ b/include/libcamera/base/meson.build @@ -7,6 +7,7 @@ libcamera_base_headers = files([ 'class.h', 'event_dispatcher.h', 'event_dispatcher_poll.h', + 'file.h', 'log.h', 'message.h', 'object.h', diff --git a/include/libcamera/internal/file.h b/include/libcamera/internal/file.h deleted file mode 100644 index 44621ceb..00000000 --- a/include/libcamera/internal/file.h +++ /dev/null @@ -1,78 +0,0 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ -/* - * Copyright (C) 2020, Google Inc. - * - * file.h - File I/O operations - */ -#ifndef __LIBCAMERA_INTERNAL_FILE_H__ -#define __LIBCAMERA_INTERNAL_FILE_H__ - -#include -#include -#include - -#include - -#include - -namespace libcamera { - -class File -{ -public: - enum MapFlag { - MapNoOption = 0, - MapPrivate = (1 << 0), - }; - - enum OpenMode { - NotOpen = 0, - ReadOnly = (1 << 0), - WriteOnly = (1 << 1), - ReadWrite = ReadOnly | WriteOnly, - }; - - File(const std::string &name); - File(); - ~File(); - - const std::string &fileName() const { return name_; } - void setFileName(const std::string &name); - bool exists() const; - - bool open(OpenMode mode); - bool isOpen() const { return fd_ != -1; } - OpenMode openMode() const { return mode_; } - void close(); - - int error() const { return error_; } - ssize_t size() const; - - off_t pos() const; - off_t seek(off_t pos); - - ssize_t read(const Span &data); - ssize_t write(const Span &data); - - Span map(off_t offset = 0, ssize_t size = -1, - MapFlag flags = MapNoOption); - bool unmap(uint8_t *addr); - - static bool exists(const std::string &name); - -private: - LIBCAMERA_DISABLE_COPY(File) - - void unmapAll(); - - std::string name_; - int fd_; - OpenMode mode_; - - int error_; - std::map maps_; -}; - -} /* namespace libcamera */ - -#endif /* __LIBCAMERA_INTERNAL_FILE_H__ */ diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build index cf664fc9..60e9775b 100644 --- a/include/libcamera/internal/meson.build +++ b/include/libcamera/internal/meson.build @@ -23,7 +23,6 @@ libcamera_internal_headers = files([ 'device_enumerator_sysfs.h', 'device_enumerator_udev.h', 'event_notifier.h', - 'file.h', 'formats.h', 'ipa_manager.h', 'ipa_module.h', -- cgit v1.2.1