From 9fe7643285829ccffbdd1e5a0669b3b2c7f4bc34 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Fri, 22 Feb 2019 15:59:33 +0100 Subject: [PATCH] Remove rom_fallback server --- recipes/src/rom_fallback/content.mk | 2 - recipes/src/rom_fallback/hash | 1 - recipes/src/rom_fallback/used_apis | 1 - run/rom_fallback.run | 86 ----------- src/server/rom_fallback/README | 22 --- src/server/rom_fallback/component.cc | 219 --------------------------- src/server/rom_fallback/target.mk | 5 - 7 files changed, 336 deletions(-) delete mode 100644 recipes/src/rom_fallback/content.mk delete mode 100644 recipes/src/rom_fallback/hash delete mode 100644 recipes/src/rom_fallback/used_apis delete mode 100644 run/rom_fallback.run delete mode 100644 src/server/rom_fallback/README delete mode 100644 src/server/rom_fallback/component.cc delete mode 100644 src/server/rom_fallback/target.mk diff --git a/recipes/src/rom_fallback/content.mk b/recipes/src/rom_fallback/content.mk deleted file mode 100644 index 047072d..0000000 --- a/recipes/src/rom_fallback/content.mk +++ /dev/null @@ -1,2 +0,0 @@ -SRC_DIR = src/server/rom_fallback -include $(GENODE_DIR)/repos/base/recipes/src/content.inc diff --git a/recipes/src/rom_fallback/hash b/recipes/src/rom_fallback/hash deleted file mode 100644 index a39cae5..0000000 --- a/recipes/src/rom_fallback/hash +++ /dev/null @@ -1 +0,0 @@ -2017-08-28 20b7a65bfac6aed1c94285006623a5f35169e8bb diff --git a/recipes/src/rom_fallback/used_apis b/recipes/src/rom_fallback/used_apis deleted file mode 100644 index df967b9..0000000 --- a/recipes/src/rom_fallback/used_apis +++ /dev/null @@ -1 +0,0 @@ -base diff --git a/run/rom_fallback.run b/run/rom_fallback.run deleted file mode 100644 index f896314..0000000 --- a/run/rom_fallback.run +++ /dev/null @@ -1,86 +0,0 @@ -# -# \brief Test of 'rom_fallback' server -# \author Emery Hemingway -# \date 2016-07-21 -# - -create_boot_directory - -import_from_depot \ - genodelabs/src/[base_src] \ - genodelabs/src/init \ - genodelabs/src/report_rom \ - genodelabs/src/rom_fallback \ - -build { server/rom_fallback test/libc } - -append config { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -} - -install_config $config - -set boot_modules { - rom_fallback - libc.lib.so vfs.lib.so - libm.lib.so - posix.lib.so - test-libc -} - -build_boot_image $boot_modules - -append qemu_args " -nographic" - -run_genode_until {--- libC test ---} 60 diff --git a/src/server/rom_fallback/README b/src/server/rom_fallback/README deleted file mode 100644 index 83d5fe1..0000000 --- a/src/server/rom_fallback/README +++ /dev/null @@ -1,22 +0,0 @@ -Rom_fallback serves ROM sessions by opening sessions at its parent using -a list of labels and returning the first successfully opened session. - -In the following configuration example an attempt is made to forward -sessions from the parent with a fallback at the sibling 'fs_rom'. -! -! <.../> -! -! -! -! -! -! -! -! -! -! -! -! -! <.../> -! -! diff --git a/src/server/rom_fallback/component.cc b/src/server/rom_fallback/component.cc deleted file mode 100644 index 4a76d18..0000000 --- a/src/server/rom_fallback/component.cc +++ /dev/null @@ -1,219 +0,0 @@ -/* - * \brief Service fallback server - * \author Emery Hemingway - * \date 2016-07-21 - */ - -/* - * Copyright (C) 2016 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. - */ - -/* TODO: ambiguated services */ - -/* Genode includes */ -#include -#include -#include -#include -#include -#include - -namespace Rom_fallback { - using namespace Genode; - struct Main; -} - -struct Rom_fallback::Main -{ - struct Fallback_label; - typedef List Fallback_labels; - - struct Fallback_label : Session_label, Fallback_labels::Element - { - using Session_label::Session_label; - }; - - Fallback_labels fallbacks; - - struct Session : Parent::Server - { - Parent::Client parent_client; - - Id_space::Element client_id; - Id_space::Element server_id; - - Session(Id_space &client_space, - Id_space &server_space, - Parent::Server::Id server_id) - : - client_id(parent_client, client_space), - server_id(*this, server_space, server_id) { } - }; - - Id_space server_id_space; - - Env &env; - - Attached_rom_dataspace config_rom { env, "config" }; - Attached_rom_dataspace session_requests { env, "session_requests" }; - - Heap heap { env.ram(), env.rm() }; - - void load_config() - { - while (Fallback_label *f = fallbacks.first()) { - fallbacks.remove(f); - destroy(heap, f); - } - - /* keep a pointer to last element of the list for inserting */ - Fallback_label *last = nullptr; - config_rom.xml().for_each_sub_node("fallback", [&] (Xml_node node) { - typedef String Label; - - Fallback_label *fallback = new (heap) - Fallback_label(node.attribute_value("label", Label()).string()); - fallbacks.insert(fallback, last); - last = fallback; - }); - } - - void handle_session_request(Xml_node request); - - void handle_session_requests() - { - if (config_sig_rec.pending()) { - do { config_sig_rec.pending_signal(); } - while (config_sig_rec.pending()); - config_rom.update(); - load_config(); - } - - session_requests.update(); - - Xml_node const requests = session_requests.xml(); - - requests.for_each_sub_node([&] (Xml_node request) { - handle_session_request(request); - }); - } - - Signal_handler
session_request_handler { - env.ep(), *this, &Main::handle_session_requests }; - - Signal_context config_sig_ctx; - Signal_receiver config_sig_rec; - - Main(Genode::Env &env) : env(env) - { - load_config(); - - config_rom.sigh(config_sig_rec.manage(&config_sig_ctx)); - session_requests.sigh(session_request_handler); - - /* handle requests that have queued before or during construction */ - handle_session_requests(); - } - - ~Main() { - config_sig_rec.dissolve(&config_sig_ctx); } -}; - - -void Rom_fallback::Main::handle_session_request(Xml_node request) -{ - if (!request.has_attribute("id")) - return; - - Parent::Server::Id const server_id { request.attribute_value("id", 0UL) }; - - if (request.has_type("create")) { - - if (!request.has_sub_node("args")) - return; - - typedef Session_state::Args Args; - Args const args = request.sub_node("args").decoded_content(); - - Session_label const original = label_from_args(args.string()); - - enum { ARGS_MAX_LEN = 256 }; - char new_args[ARGS_MAX_LEN]; - - for (Fallback_label *f = fallbacks.first(); f; f = f->next()) { - Session_label &prefix = *f; - - /* create new label */ - Session_label const new_label = prefix == "" ? - original : prefixed_label(prefix, original); - - /* create a new argument set */ - strncpy(new_args, args.string(), sizeof(new_args)); - Arg_string::set_arg_string(new_args, sizeof(new_args), "label", - new_label.string()); - - /* try this service */ - Session *session = nullptr; - try { - session = new (heap) - Session(env.id_space(), server_id_space, server_id); - - Affinity aff; - Session_capability cap = - env.session("ROM", session->client_id.id(), new_args, aff); - - env.parent().deliver_session_cap(server_id, cap); - return; - } - - catch (Service_denied) { - warning("'", new_label, "' was denied"); } - - catch (Insufficient_ram_quota) { - warning("'", new_label, "' RAM quota donation was insufficient"); } - - catch (Insufficient_cap_quota) { - warning("'", new_label, "' cap quota donation was insufficient"); } - - if (session) - destroy(heap, session); - } - - error("no service found for ROM '", original.string(), "'"); - env.parent().session_response(server_id, Parent::SERVICE_DENIED); - } - - if (request.has_type("upgrade")) { - - server_id_space.apply(server_id, [&] (Session &session) { - - Ram_quota ram_quota { request.attribute_value("ram_quota", 0UL) }; - Cap_quota cap_quota { request.attribute_value("cap_quota", 0UL) }; - - String<80> args("ram_quota=", ram_quota, ", cap_quota=", cap_quota); - - env.upgrade(session.client_id.id(), args.string()); - env.parent().session_response(server_id, Parent::SESSION_OK); - }); - } - - if (request.has_type("close")) { - server_id_space.apply(server_id, [&] (Session &session) { - env.close(session.client_id.id()); - destroy(heap, &session); - env.parent().session_response(server_id, Parent::SESSION_CLOSED); - }); - } - -} - - -void Component::construct(Genode::Env &env) -{ - static Rom_fallback::Main inst(env); - - env.parent().announce("ROM"); -} diff --git a/src/server/rom_fallback/target.mk b/src/server/rom_fallback/target.mk deleted file mode 100644 index 5479894..0000000 --- a/src/server/rom_fallback/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -TARGET = rom_fallback -SRC_CC = component.cc -LIBS = base - -CC_CXX_WARN_STRICT =