From da1208c1597cea0cab146ef9c3eb6300d1d46d12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Wed, 10 Apr 2019 11:09:00 +0200 Subject: [PATCH] Remove any-rom VFS plugin The plugin does not build anymore, which will lead to errors if 'make lib/vfs' is executed and the original use-case is gone according to the plugin's author anyway. Fixes #155. --- src/lib/vfs/any-rom/any-rom.cc | 274 --------------------------------- src/lib/vfs/any-rom/target.mk | 4 - 2 files changed, 278 deletions(-) delete mode 100644 src/lib/vfs/any-rom/any-rom.cc delete mode 100644 src/lib/vfs/any-rom/target.mk diff --git a/src/lib/vfs/any-rom/any-rom.cc b/src/lib/vfs/any-rom/any-rom.cc deleted file mode 100644 index 832c4a4..0000000 --- a/src/lib/vfs/any-rom/any-rom.cc +++ /dev/null @@ -1,274 +0,0 @@ -/* - * \brief Any ROM filesystem - * \author Emery Hemingway - * \date 2015-10-28 - */ - -/* - * Copyright (C) 2015 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU General Public License version 2. - */ - -#include -#include -#include -#include -#include - -namespace Vfs { class Any_rom_file_system; }; - -class Vfs::Any_rom_file_system : public File_system -{ - private: - - struct Rom : Genode::Attached_rom_dataspace, Genode::List::Element - { - Genode::Session_label const _name; - - int _ref_count = 0; - - Rom(Genode::Env &env, Genode::Session_label const &rom_label ) - : Attached_rom_dataspace(env, rom_label.string()), _name(rom_label.last_element()) { } - - bool operator == (char const *other) const { return _name == other; } - - void incr() { ++_ref_count; } - void decr() { --_ref_count; } - - bool unused() const { return _ref_count <= 0; } - }; - - class Rom_vfs_handle : public Vfs_handle - { - private: - - Rom &_rom; - - public: - - Rom_vfs_handle(Any_rom_file_system &fs, - Genode::Allocator &alloc, - Rom &rom) - : - Vfs_handle(fs, fs, alloc, OPEN_MODE_RDONLY), - _rom(rom) - { _rom.incr(); } - - ~Rom_vfs_handle() { _rom.decr(); } - - file_size read(char *buf, file_size buf_size) - { - file_size size = _rom.size(); - file_size offset = min(size, seek()); - file_size len = min(buf_size, (size - offset)); - - memcpy(buf, _rom.local_addr()+offset, len); - return len; - } - }; - - Genode::Env &_env; - Genode::Allocator &_alloc; - Genode::List _roms; - - Genode::Session_label const _label; - - Rom *lookup(char const *filename) - { - using namespace Genode; - - if (*filename == '/') ++filename; - - for (Rom *rom = _roms.first(); rom; rom = rom->next()) { - if (*rom == filename) { - /* if the ROM dataspace is not in use, update it */ - if (rom->unused()) { - _roms.remove(rom); - destroy(_alloc, rom); - /* fallthru and try again */ - } else - return rom; - } - } - - try { - Rom *rom = new (_alloc) - Rom(_env, prefixed_label(_label, Session_label(filename))); - _roms.insert(rom); - return rom; - } catch (...) { } - return 0; - } - - public: - - Any_rom_file_system(Genode::Env &env, - Genode::Allocator &alloc, - Genode::Xml_node node) - : - _env(env), _alloc(alloc), - _label(node.attribute_value("label", - Genode::String()).string()) - { } - - /********************************* - ** Directory-service interface ** - *********************************/ - - file_size num_dirent(char const *path) override { return 0; } - - bool directory(char const *path) override { return false; } - - char const *leaf_path(char const *path) override { - return lookup(path) ? path : 0; } - - Dataspace_capability dataspace(char const *path) override - { - if (Rom *rom = lookup(path)) { - rom->incr(); - return rom->cap(); - } - return Dataspace_capability(); - } - - void release(char const *path, - Dataspace_capability ds_cap) override - { - if (Rom *rom = lookup(path)) - rom->decr(); - } - - Open_result open(char const *path, - unsigned mode, - Vfs_handle **handle, - Genode::Allocator &alloc) override - { - if ((mode & OPEN_MODE_ACCMODE) != OPEN_MODE_RDONLY) - return OPEN_ERR_NO_PERM; - - Rom *rom = lookup(path); - if (!rom) - return (mode & OPEN_MODE_CREATE) ? - OPEN_ERR_NO_PERM : OPEN_ERR_UNACCESSIBLE; - - if (mode & OPEN_MODE_CREATE) - return OPEN_ERR_EXISTS; - - *handle = new (alloc) Rom_vfs_handle(*this, alloc, *rom); - return OPEN_OK; - } - - void close(Vfs_handle *vfs_handle) override - { - Rom_vfs_handle *handle = - static_cast(vfs_handle); - if (handle) - destroy(handle->alloc(), handle); - } - - Stat_result stat(char const *path, Stat &stat) override - { - stat = Stat(); - Rom *rom = lookup(path); - if (!rom) return STAT_ERR_NO_ENTRY; - - stat.size = rom->size(); - return STAT_OK; - } - - Dirent_result dirent(char const *, file_offset, Dirent &dirent) override { - return DIRENT_ERR_INVALID_PATH; } - - Unlink_result unlink(char const *path) - { - if (Rom *rom = lookup(path)) { - if (rom->unused()) { - /* why not free some memory */ - _roms.remove(rom); - destroy(_alloc, rom); - return UNLINK_OK; - } - return UNLINK_ERR_NO_PERM; - } - return UNLINK_ERR_NO_ENTRY; - } - - Readlink_result readlink(char const*, char*, - file_size, file_size&) override { - return READLINK_ERR_NO_ENTRY; } - - Rename_result rename(char const *path, char const*) override - { - if (lookup(path)) - return RENAME_ERR_NO_PERM; - return RENAME_ERR_NO_ENTRY; - } - - Symlink_result symlink(char const*, char const*) override { - return SYMLINK_ERR_NO_PERM; } - - Mkdir_result mkdir(char const*, unsigned) override { - return MKDIR_ERR_NO_PERM; } - - /** - * Clean out unused ROM connections - */ - void sync(char const *path) override - { - for (Rom *rom = _roms.first(); rom;) { - if (rom->unused()) { - _roms.remove(rom); - destroy(_alloc, rom); - rom = _roms.first(); - } else { - rom = rom->next(); - } - } - } - - /********************** - ** File I/O service ** - **********************/ - - Write_result write(Vfs_handle*, - char const*, file_size, - file_size&) override { - return WRITE_ERR_INVALID; } - - Read_result read(Vfs_handle *vfs_handle, - char *buf, file_size buf_size, - file_size &out) override - { - Rom_vfs_handle *handle = - static_cast(vfs_handle); - if (handle) { - out = handle->read(buf, buf_size); - return READ_OK; - } else { - out = 0; - return READ_ERR_INVALID; - } - } - - Ftruncate_result ftruncate(Vfs_handle *, file_size) override { - return FTRUNCATE_ERR_NO_PERM; } -}; - - -extern "C" Vfs::File_system_factory *vfs_file_system_factory(void) -{ - struct Any_rom_factory : Vfs::File_system_factory - { - Vfs::File_system *create(Genode::Env &env, - Genode::Allocator &alloc, - Genode::Xml_node node) override - { - return new (alloc) Vfs::Any_rom_file_system(env, alloc, node); - } - }; - - static Any_rom_factory factory; - return &factory; -} diff --git a/src/lib/vfs/any-rom/target.mk b/src/lib/vfs/any-rom/target.mk deleted file mode 100644 index db01d35..0000000 --- a/src/lib/vfs/any-rom/target.mk +++ /dev/null @@ -1,4 +0,0 @@ -TARGET = any-rom_plugin -LIBS = vfs_any-rom - -CC_CXX_WARN_STRICT =