From 8243329ad4a869262b9c581cabe0cd6d01f49bb5 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Sun, 8 Sep 2013 02:44:30 +0200 Subject: [PATCH] os: Move Genode::Config into 'config' library Originally, the convenience utility for accessing a process configuration came in the form of a header file. But this causes aliasing problems if multiple compilation units access the config while the configuration gets dynamically updated. Moving the implementation of the accessor to the singleton object into a library solves those problems. --- base/mk/base-libs.mk | 2 +- dde_linux/lib/mk/usb.inc | 2 +- dde_linux/src/lib/usb/include/platform.h | 3 - demo/src/app/backdrop/target.mk | 2 +- demo/src/app/launchpad/target.mk | 2 +- demo/src/server/liquid_framebuffer/target.mk | 2 +- gems/src/server/terminal/target.mk | 2 +- libports/lib/mk/libc.mk | 2 +- .../src/app/qt5/qt_avplay/main_window.cpp | 4 +- .../src/drivers/framebuffer/vesa/target.mk | 2 +- libports/src/lib/sdl/audio/SDL_genodeaudio.cc | 1 - libports/src/server/ffat_fs/target.mk | 2 +- os/include/os/config.h | 123 ++++++------------ os/lib/mk/config.mk | 3 + os/lib/mk/config_args.mk | 2 + os/src/app/cli_monitor/target.mk | 2 +- os/src/app/xvfb/target.mk | 2 +- os/src/drivers/atapi/target.mk | 2 +- os/src/drivers/framebuffer/imx53/target.mk | 2 +- os/src/drivers/framebuffer/omap4/target.mk | 2 +- os/src/drivers/pci/x86/target.mk | 2 +- os/src/drivers/uart/exynos5/target.mk | 2 +- os/src/drivers/uart/i8250/target.mk | 2 +- os/src/drivers/uart/kdb/target.inc | 2 +- os/src/drivers/uart/omap4/target.mk | 2 +- os/src/drivers/uart/pl011/target.mk | 2 +- os/src/init/main.cc | 4 +- os/src/init/target.mk | 2 +- os/src/lib/config/config.cc | 97 ++++++++++++++ os/src/lib/config_args/config_args.cc | 1 - os/src/server/nic_bridge/target.mk | 2 +- os/src/server/nit_fb/target.mk | 2 +- os/src/server/nitpicker/genode/target.mk | 2 +- os/src/server/part_blk/target.mk | 2 +- os/src/server/ram_fs/main.cc | 1 - os/src/server/ram_fs/target.mk | 2 +- os/src/server/rom_loopdev/target.mk | 2 +- os/src/server/rom_prefetcher/target.mk | 2 +- os/src/server/tar_fs/target.mk | 2 +- os/src/server/tar_rom/target.mk | 2 +- os/src/test/audio_out/target.mk | 2 +- os/src/test/bomb/target.mk | 2 +- os/src/test/chroot_loader/target.mk | 2 +- os/src/test/dynamic_config/main.cc | 8 +- os/src/test/dynamic_config/target.mk | 2 +- os/src/test/part_blk/target.mk | 2 +- os/src/test/rom_blk/target.mk | 2 +- os/src/test/trace/target.mk | 2 +- ports-foc/lib/mk/l4lx.mk | 2 +- ports-foc/mk/l4lx.mk | 2 +- ports-okl4/lib/mk/oklx.mk | 2 +- ports-okl4/patches/oklx_genode.patch | 2 +- ports/src/noux/minimal/target.mk | 2 +- ports/src/noux/net/target.mk | 2 +- .../test/gdb_monitor_target_config/main.cc | 3 - .../test/gdb_monitor_target_config/target.mk | 2 +- ports/src/vancouver/target.inc | 2 +- qt4/src/app/qt_avplay/main_window.cpp | 4 +- 58 files changed, 191 insertions(+), 153 deletions(-) create mode 100644 os/lib/mk/config.mk create mode 100644 os/src/lib/config/config.cc diff --git a/base/mk/base-libs.mk b/base/mk/base-libs.mk index 58c01c5e6..245434e6a 100644 --- a/base/mk/base-libs.mk +++ b/base/mk/base-libs.mk @@ -4,7 +4,7 @@ # These linked against 'ldso' and filtered out for dynamically # linked binaries # -BASE_LIBS = base-common base cxx timed_semaphore alarm +BASE_LIBS = base-common base cxx timed_semaphore alarm config # # Name of Genode's dynamic linker diff --git a/dde_linux/lib/mk/usb.inc b/dde_linux/lib/mk/usb.inc index 754df0fab..f83e206f2 100644 --- a/dde_linux/lib/mk/usb.inc +++ b/dde_linux/lib/mk/usb.inc @@ -1,7 +1,7 @@ LIB_DIR = $(REP_DIR)/src/lib/usb LIB_INC_DIR = $(LIB_DIR)/include -LIBS += base cxx dde_kit libc-setjmp +LIBS += base cxx dde_kit libc-setjmp config SRC_CC += main.cc lx_emul.cc irq.cc timer.cc event.cc storage.cc \ input_component.cc nic.cc SRC_C += dummies.c scsi.c evdev.c diff --git a/dde_linux/src/lib/usb/include/platform.h b/dde_linux/src/lib/usb/include/platform.h index 13a3571e2..88b062215 100644 --- a/dde_linux/src/lib/usb/include/platform.h +++ b/dde_linux/src/lib/usb/include/platform.h @@ -41,9 +41,6 @@ struct Services try { config()->xml_node().sub_node("hid"); hid = true; - } catch (Config::Invalid) { - PDBG("No node found - not starting any USB services"); - return; } catch (Xml_node::Nonexistent_sub_node) { PDBG("No config node found - not starting the USB HID (Input) service"); } diff --git a/demo/src/app/backdrop/target.mk b/demo/src/app/backdrop/target.mk index 99f8448d7..ef4c951a9 100644 --- a/demo/src/app/backdrop/target.mk +++ b/demo/src/app/backdrop/target.mk @@ -1,4 +1,4 @@ TARGET = backdrop SRC_CC = main.cc -LIBS = base libpng_static libz_static mini_c +LIBS = base libpng_static libz_static mini_c config CC_OPT += -DPNG_USER_CONFIG diff --git a/demo/src/app/launchpad/target.mk b/demo/src/app/launchpad/target.mk index df8a3b2c2..0b54bd086 100644 --- a/demo/src/app/launchpad/target.mk +++ b/demo/src/app/launchpad/target.mk @@ -1,5 +1,5 @@ TARGET = launchpad -LIBS = launchpad scout_widgets +LIBS = launchpad scout_widgets config SRC_CC = launchpad_window.cc \ launcher.cc \ main.cc diff --git a/demo/src/server/liquid_framebuffer/target.mk b/demo/src/server/liquid_framebuffer/target.mk index 567871102..8ed86f1e2 100644 --- a/demo/src/server/liquid_framebuffer/target.mk +++ b/demo/src/server/liquid_framebuffer/target.mk @@ -1,5 +1,5 @@ TARGET = liquid_fb -LIBS = scout_widgets +LIBS = scout_widgets config SRC_CC = main.cc services.cc INC_DIR += $(REP_DIR)/src/app/scout/include \ $(REP_DIR)/src/app/scout/include/genode \ diff --git a/gems/src/server/terminal/target.mk b/gems/src/server/terminal/target.mk index 46b6e93be..86d2c79be 100644 --- a/gems/src/server/terminal/target.mk +++ b/gems/src/server/terminal/target.mk @@ -1,4 +1,4 @@ TARGET = terminal SRC_CC = main.cc -LIBS = base +LIBS = base config SRC_BIN = $(notdir $(wildcard $(PRG_DIR)/*.tff)) diff --git a/libports/lib/mk/libc.mk b/libports/lib/mk/libc.mk index 0db85d841..cb031c0d1 100644 --- a/libports/lib/mk/libc.mk +++ b/libports/lib/mk/libc.mk @@ -4,7 +4,7 @@ LIBS = libc-string libc-locale libc-stdlib libc-stdio libc-gen libc-gdtoa \ libc-inet libc-stdtime libc-regex libc-compat libc-setjmp -LIBS += base +LIBS += base config # # Back end diff --git a/libports/src/app/qt5/qt_avplay/main_window.cpp b/libports/src/app/qt5/qt_avplay/main_window.cpp index e3c090978..163dd9ded 100644 --- a/libports/src/app/qt5/qt_avplay/main_window.cpp +++ b/libports/src/app/qt5/qt_avplay/main_window.cpp @@ -86,9 +86,7 @@ Main_window::Main_window() qDebug() << "filter:" << framebuffer_filter->name << "," << framebuffer_filter->ram_quota; framebuffer_filters.prepend(framebuffer_filter); } - } catch (Config::Invalid) { - } catch (Xml_node::Nonexistent_sub_node) { - } + } catch (Xml_node::Nonexistent_sub_node) { } /* start the filtering framebuffer services */ diff --git a/libports/src/drivers/framebuffer/vesa/target.mk b/libports/src/drivers/framebuffer/vesa/target.mk index 7cf561451..cb0b71000 100644 --- a/libports/src/drivers/framebuffer/vesa/target.mk +++ b/libports/src/drivers/framebuffer/vesa/target.mk @@ -1,5 +1,5 @@ TARGET = fb_drv REQUIRES = vesa SRC_CC = main.cc framebuffer.cc ifx86emu.cc hw_emul.cc -LIBS = base blit x86emu +LIBS = base blit x86emu config INC_DIR += $(PRG_DIR)/include $(REP_DIR)/include/x86emu diff --git a/libports/src/lib/sdl/audio/SDL_genodeaudio.cc b/libports/src/lib/sdl/audio/SDL_genodeaudio.cc index 5cff4c528..276055e26 100644 --- a/libports/src/lib/sdl/audio/SDL_genodeaudio.cc +++ b/libports/src/lib/sdl/audio/SDL_genodeaudio.cc @@ -83,7 +83,6 @@ static void read_config() volume = (float)config_volume / 100; } - catch (Genode::Config::Invalid) { } catch (Genode::Xml_node::Nonexistent_sub_node) { } catch (Genode::Xml_node::Nonexistent_attribute) { } } diff --git a/libports/src/server/ffat_fs/target.mk b/libports/src/server/ffat_fs/target.mk index bea2bf85b..0ec6a59b9 100644 --- a/libports/src/server/ffat_fs/target.mk +++ b/libports/src/server/ffat_fs/target.mk @@ -1,4 +1,4 @@ TARGET = ffat_fs SRC_CC = main.cc -LIBS = base ffat_block +LIBS = base ffat_block config INC_DIR += $(PRG_DIR) diff --git a/os/include/os/config.h b/os/include/os/config.h index 9dcf2931c..dfc013a12 100644 --- a/os/include/os/config.h +++ b/os/include/os/config.h @@ -14,100 +14,53 @@ #ifndef _INCLUDE__OS__CONFIG_H_ #define _INCLUDE__OS__CONFIG_H_ -#include -#include #include +#include +#include #include namespace Genode { - class Config - { - private: - - Rom_connection _config_rom; - Dataspace_capability _config_ds; - Xml_node _config_xml; - - Xml_node _config_xml_node() - { - if (_config_ds.valid()) - return Xml_node(env()->rm_session()->attach(_config_ds), - Genode::Dataspace_client(_config_ds).size()); - else - return Xml_node(""); - } - - public: - - /** - * Exception class for configuration errors - */ - class Invalid : public Exception { }; - - /** - * Constructor - */ - Config() : - _config_rom("config"), - _config_ds(_config_rom.dataspace()), - _config_xml(_config_xml_node()) - { } - - Xml_node xml_node() { return _config_xml; } - - /** - * Register signal handler for tracking config modifications - */ - void sigh(Signal_context_capability cap) { _config_rom.sigh(cap); } - - /** - * Reload configuration - * - * \throw Invalid if the new configuration has an invalid syntax - * - * This function is meant to be called as response to a signal - * received by the signal handler as registered via 'sigh()'. - */ - void reload() - { - try { - /* re-acquire dataspace from ROM session */ - if (_config_ds.valid()) - env()->rm_session()->detach(_config_xml.addr()); - - _config_ds = _config_rom.dataspace(); - - /* re-initialize XML node with new config data */ - _config_xml = _config_xml_node(); - - } catch (Genode::Xml_node::Invalid_syntax) { - PERR("Config file has invalid syntax"); - throw Invalid(); - } - } - }; + class Config; /** * Return singleton instance of config */ - static Config *config() - { - static bool config_failed = false; - if (!config_failed) { - try { - static Config config_inst; - return &config_inst; - } catch (Genode::Rom_connection::Rom_connection_failed) { - PERR("Could not obtain config file"); - } catch (Genode::Xml_node::Invalid_syntax) { - PERR("Config file has invalid syntax"); - } - } - /* do not try again to construct 'config_inst' */ - config_failed = true; - throw Config::Invalid(); - } + Config *config(); } + +class Genode::Config +{ + private: + + Rom_connection _config_rom; + Dataspace_capability _config_ds; + Xml_node _config_xml; + + public: + + /** + * Constructor + */ + Config(); + + Xml_node xml_node(); + + /** + * Register signal handler for tracking config modifications + */ + void sigh(Signal_context_capability cap); + + /** + * Reload configuration + * + * \throw Invalid if the new configuration has an invalid syntax + * + * This function is meant to be called as response to a signal + * received by the signal handler as registered via 'sigh()'. + */ + void reload(); +}; + #endif /* _INCLUDE__OS__CONFIG_H_ */ diff --git a/os/lib/mk/config.mk b/os/lib/mk/config.mk new file mode 100644 index 000000000..e47bb7504 --- /dev/null +++ b/os/lib/mk/config.mk @@ -0,0 +1,3 @@ +SRC_CC = config.cc + +vpath config.cc $(REP_DIR)/src/lib/config diff --git a/os/lib/mk/config_args.mk b/os/lib/mk/config_args.mk index dbf9be6a1..3f8f4d64b 100644 --- a/os/lib/mk/config_args.mk +++ b/os/lib/mk/config_args.mk @@ -1,3 +1,5 @@ SRC_CC = config_args.cc +LIBS += config + vpath %.cc $(REP_DIR)/src/lib/config_args diff --git a/os/src/app/cli_monitor/target.mk b/os/src/app/cli_monitor/target.mk index 18b602246..e6fa14057 100644 --- a/os/src/app/cli_monitor/target.mk +++ b/os/src/app/cli_monitor/target.mk @@ -1,4 +1,4 @@ TARGET = cli_monitor SRC_CC = main.cc -LIBS = base cli_monitor +LIBS = base cli_monitor config INC_DIR += $(PRG_DIR) diff --git a/os/src/app/xvfb/target.mk b/os/src/app/xvfb/target.mk index 82ce6cd52..d456edf93 100644 --- a/os/src/app/xvfb/target.mk +++ b/os/src/app/xvfb/target.mk @@ -1,6 +1,6 @@ TARGET = xvfb REQUIRES = linux x11 xtest xdamage SRC_CC = main.cc inject_input.cc -LIBS = base_hybrid syscall blit xev_track +LIBS = base_hybrid syscall blit xev_track config EXT_OBJECTS += -lX11 -lXdamage /usr/lib/libXtst.so.6 diff --git a/os/src/drivers/atapi/target.mk b/os/src/drivers/atapi/target.mk index 51fc38a0c..837bd5e39 100644 --- a/os/src/drivers/atapi/target.mk +++ b/os/src/drivers/atapi/target.mk @@ -2,7 +2,7 @@ TARGET = atapi_drv REQUIRES = x86 SRC_CC = main.cc ata_device.cc atapi_device.cc io.cc ata_bus_master.cc SRC_C = mindrvr.c -LIBS = base +LIBS = base config INC_DIR += $(PRG_DIR)/contrib $(PRG_DIR) diff --git a/os/src/drivers/framebuffer/imx53/target.mk b/os/src/drivers/framebuffer/imx53/target.mk index 54597876c..4528586cc 100644 --- a/os/src/drivers/framebuffer/imx53/target.mk +++ b/os/src/drivers/framebuffer/imx53/target.mk @@ -1,7 +1,7 @@ TARGET = fb_drv REQUIRES = imx53 SRC_CC = main.cc -LIBS = base blit +LIBS = base blit config INC_DIR += $(PRG_DIR) vpath main.cc $(PRG_DIR) diff --git a/os/src/drivers/framebuffer/omap4/target.mk b/os/src/drivers/framebuffer/omap4/target.mk index 98e3b900d..820e84014 100644 --- a/os/src/drivers/framebuffer/omap4/target.mk +++ b/os/src/drivers/framebuffer/omap4/target.mk @@ -7,7 +7,7 @@ TARGET = fb_drv REQUIRES = omap4 SRC_CC = main.cc -LIBS = base +LIBS = base config INC_DIR += $(PRG_DIR) vpath main.cc $(PRG_DIR) diff --git a/os/src/drivers/pci/x86/target.mk b/os/src/drivers/pci/x86/target.mk index d3509e172..2e67d748f 100644 --- a/os/src/drivers/pci/x86/target.mk +++ b/os/src/drivers/pci/x86/target.mk @@ -1,7 +1,7 @@ TARGET = pci_drv REQUIRES = x86 SRC_CC = main.cc -LIBS = base +LIBS = base config INC_DIR = $(PRG_DIR)/.. diff --git a/os/src/drivers/uart/exynos5/target.mk b/os/src/drivers/uart/exynos5/target.mk index 183768ec4..8b751b320 100644 --- a/os/src/drivers/uart/exynos5/target.mk +++ b/os/src/drivers/uart/exynos5/target.mk @@ -1,6 +1,6 @@ TARGET = uart_drv REQUIRES = exynos5 SRC_CC = main.cc -LIBS = base +LIBS = base config INC_DIR += $(PRG_DIR) $(PRG_DIR)/.. diff --git a/os/src/drivers/uart/i8250/target.mk b/os/src/drivers/uart/i8250/target.mk index 8422bdb91..5b6aaf5d6 100644 --- a/os/src/drivers/uart/i8250/target.mk +++ b/os/src/drivers/uart/i8250/target.mk @@ -1,6 +1,6 @@ TARGET = uart_drv REQUIRES = x86 SRC_CC = main.cc -LIBS = base +LIBS = base config INC_DIR += $(PRG_DIR) $(PRG_DIR)/.. diff --git a/os/src/drivers/uart/kdb/target.inc b/os/src/drivers/uart/kdb/target.inc index 398fb9529..d1146ea51 100644 --- a/os/src/drivers/uart/kdb/target.inc +++ b/os/src/drivers/uart/kdb/target.inc @@ -1,6 +1,6 @@ TARGET = kdb_uart_drv SRC_CC = main.cc -LIBS = base +LIBS = base config INC_DIR += $(PRG_DIR)/.. $(PRG_DIR)/../.. diff --git a/os/src/drivers/uart/omap4/target.mk b/os/src/drivers/uart/omap4/target.mk index 2d005d15f..9ae42a470 100644 --- a/os/src/drivers/uart/omap4/target.mk +++ b/os/src/drivers/uart/omap4/target.mk @@ -1,6 +1,6 @@ TARGET = uart_drv REQUIRES = omap4 SRC_CC = main.cc -LIBS = base +LIBS = base config INC_DIR += $(PRG_DIR) $(PRG_DIR)/.. diff --git a/os/src/drivers/uart/pl011/target.mk b/os/src/drivers/uart/pl011/target.mk index d755a7ff0..19e69ce1b 100644 --- a/os/src/drivers/uart/pl011/target.mk +++ b/os/src/drivers/uart/pl011/target.mk @@ -1,6 +1,6 @@ TARGET = uart_drv REQUIRES = pl011 SRC_CC = main.cc -LIBS = base +LIBS = base config INC_DIR += $(PRG_DIR) $(PRG_DIR)/.. diff --git a/os/src/init/main.cc b/os/src/init/main.cc index 1be73402b..47d87f561 100644 --- a/os/src/init/main.cc +++ b/os/src/init/main.cc @@ -229,8 +229,8 @@ int main(int, char **) } catch (Xml_node::Nonexistent_sub_node) { PERR("No children to start"); } - catch (Config::Invalid) { - PERR("No valid config found"); } + catch (Xml_node::Invalid_syntax) { + PERR("No children to start"); } catch (Init::Child::Child_name_is_not_unique) { } /* diff --git a/os/src/init/target.mk b/os/src/init/target.mk index 8998b99c9..5d1a5574a 100644 --- a/os/src/init/target.mk +++ b/os/src/init/target.mk @@ -1,3 +1,3 @@ TARGET = init SRC_CC = main.cc -LIBS = base init_pd_args +LIBS = base init_pd_args config diff --git a/os/src/lib/config/config.cc b/os/src/lib/config/config.cc new file mode 100644 index 000000000..bf7a80bb5 --- /dev/null +++ b/os/src/lib/config/config.cc @@ -0,0 +1,97 @@ +/* + * \brief Access to process configuration + * \author Norman Feske + * \date 2010-05-04 + */ + +/* + * Copyright (C) 2010-2013 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 + +using namespace Genode; + +Xml_node _config_xml_node(Dataspace_capability config_ds) +{ + return Xml_node(env()->rm_session()->attach(config_ds), + Genode::Dataspace_client(config_ds).size()); +} + + +/** + * Fallback XML node used if the configuration is broken + */ +static Xml_node fallback_config_xml() +{ + return Xml_node(""); +} + + +void Config::reload() +{ + if (!this) + return; + + try { + /* re-acquire dataspace from ROM session */ + if (_config_ds.valid()) + env()->rm_session()->detach(_config_xml.addr()); + + _config_ds = _config_rom.dataspace(); + + /* re-initialize XML node with new config data */ + _config_xml = _config_xml_node(_config_ds); + + } catch (Genode::Xml_node::Invalid_syntax) { + PERR("Config file has invalid syntax"); + _config_xml = fallback_config_xml(); + } +} + + +Xml_node Config::xml_node() +{ + if (!this) + return fallback_config_xml(); + + return _config_xml; +} + + +void Config::sigh(Signal_context_capability cap) +{ + if (this) + _config_rom.sigh(cap); +} + + +Config::Config() +: + _config_rom("config"), + _config_ds(_config_rom.dataspace()), + _config_xml(_config_xml_node(_config_ds)) +{ } + + +Config *Genode::config() +{ + static bool config_failed = false; + if (!config_failed) { + try { + static Config config_inst; + return &config_inst; + } catch (Genode::Rom_connection::Rom_connection_failed) { + PERR("Could not obtain config file"); + } catch (Genode::Xml_node::Invalid_syntax) { + PERR("Config file has invalid syntax"); + } + } + /* do not try again to construct 'config_inst' */ + config_failed = true; + return 0; +} + diff --git a/os/src/lib/config_args/config_args.cc b/os/src/lib/config_args/config_args.cc index 22fa90caf..916e9c042 100644 --- a/os/src/lib/config_args/config_args.cc +++ b/os/src/lib/config_args/config_args.cc @@ -37,7 +37,6 @@ void init_config_args(void) arg_node = arg_node.next("arg"); } } - catch (Config::Invalid) { return; } catch (Xml_node::Nonexistent_sub_node) { } catch (Xml_node::Nonexistent_attribute) { diff --git a/os/src/server/nic_bridge/target.mk b/os/src/server/nic_bridge/target.mk index d947284eb..5308f6477 100644 --- a/os/src/server/nic_bridge/target.mk +++ b/os/src/server/nic_bridge/target.mk @@ -1,5 +1,5 @@ TARGET = nic_bridge -LIBS = base net +LIBS = base net config SRC_CC = component.cc env.cc mac.cc main.cc nic.cc packet_handler.cc vpath *.cc $(REP_DIR)/src/server/proxy_arp diff --git a/os/src/server/nit_fb/target.mk b/os/src/server/nit_fb/target.mk index c0aaaa218..182c61049 100644 --- a/os/src/server/nit_fb/target.mk +++ b/os/src/server/nit_fb/target.mk @@ -1,3 +1,3 @@ TARGET = nit_fb SRC_CC = main.cc -LIBS = base +LIBS = base config diff --git a/os/src/server/nitpicker/genode/target.mk b/os/src/server/nitpicker/genode/target.mk index 0aa75cf79..ae28706f7 100644 --- a/os/src/server/nitpicker/genode/target.mk +++ b/os/src/server/nitpicker/genode/target.mk @@ -1,5 +1,5 @@ TARGET = nitpicker -LIBS = base blit +LIBS = base blit config SRC_CC = main.cc \ view_stack.cc \ view.cc \ diff --git a/os/src/server/part_blk/target.mk b/os/src/server/part_blk/target.mk index 5734caf6d..765398454 100644 --- a/os/src/server/part_blk/target.mk +++ b/os/src/server/part_blk/target.mk @@ -1,3 +1,3 @@ TARGET = part_blk -LIBS = base +LIBS = base config SRC_CC = main.cc back_end.cc diff --git a/os/src/server/ram_fs/main.cc b/os/src/server/ram_fs/main.cc index b5b80bb5e..a56da5ca6 100644 --- a/os/src/server/ram_fs/main.cc +++ b/os/src/server/ram_fs/main.cc @@ -635,7 +635,6 @@ int main(int, char **) Xml_node content = config()->xml_node().sub_node("content"); preload_content(*env()->heap(), content, root_dir); } catch (Xml_node::Nonexistent_sub_node) { } - catch (Config::Invalid) { } static File_system::Root root(ep, sliced_heap, sig_rec, root_dir); diff --git a/os/src/server/ram_fs/target.mk b/os/src/server/ram_fs/target.mk index 5023a7f3d..0e8238db0 100644 --- a/os/src/server/ram_fs/target.mk +++ b/os/src/server/ram_fs/target.mk @@ -1,4 +1,4 @@ TARGET = ram_fs SRC_CC = main.cc -LIBS = base +LIBS = base config INC_DIR += $(PRG_DIR) diff --git a/os/src/server/rom_loopdev/target.mk b/os/src/server/rom_loopdev/target.mk index 819c241f2..4d2045bc8 100644 --- a/os/src/server/rom_loopdev/target.mk +++ b/os/src/server/rom_loopdev/target.mk @@ -1,3 +1,3 @@ TARGET = rom_loopdev SRC_CC = main.cc -LIBS = base +LIBS = base config diff --git a/os/src/server/rom_prefetcher/target.mk b/os/src/server/rom_prefetcher/target.mk index aaa5fe061..3edca88ea 100644 --- a/os/src/server/rom_prefetcher/target.mk +++ b/os/src/server/rom_prefetcher/target.mk @@ -1,3 +1,3 @@ TARGET = rom_prefetcher SRC_CC = main.cc -LIBS += base +LIBS += base config diff --git a/os/src/server/tar_fs/target.mk b/os/src/server/tar_fs/target.mk index 6d3e85930..13f893266 100644 --- a/os/src/server/tar_fs/target.mk +++ b/os/src/server/tar_fs/target.mk @@ -1,4 +1,4 @@ TARGET = tar_fs SRC_CC = main.cc -LIBS = base +LIBS = base config INC_DIR += $(PRG_DIR) diff --git a/os/src/server/tar_rom/target.mk b/os/src/server/tar_rom/target.mk index d13b6fbf5..679e7bf44 100755 --- a/os/src/server/tar_rom/target.mk +++ b/os/src/server/tar_rom/target.mk @@ -1,3 +1,3 @@ TARGET = tar_rom SRC_CC = main.cc -LIBS = base +LIBS = base config diff --git a/os/src/test/audio_out/target.mk b/os/src/test/audio_out/target.mk index feb92edbe..e3bfd7869 100644 --- a/os/src/test/audio_out/target.mk +++ b/os/src/test/audio_out/target.mk @@ -1,3 +1,3 @@ TARGET = test-audio_out SRC_CC = main.cc -LIBS = base +LIBS = base config diff --git a/os/src/test/bomb/target.mk b/os/src/test/bomb/target.mk index c1142e202..38cbc4659 100644 --- a/os/src/test/bomb/target.mk +++ b/os/src/test/bomb/target.mk @@ -1,3 +1,3 @@ TARGET = bomb SRC_CC = main.cc -LIBS = base +LIBS = base config diff --git a/os/src/test/chroot_loader/target.mk b/os/src/test/chroot_loader/target.mk index f818a7d7c..86b1dd1d0 100644 --- a/os/src/test/chroot_loader/target.mk +++ b/os/src/test/chroot_loader/target.mk @@ -1,4 +1,4 @@ TARGET = test-chroot_loader REQUIRES += linux SRC_CC = main.cc -LIBS += base +LIBS += base config diff --git a/os/src/test/dynamic_config/main.cc b/os/src/test/dynamic_config/main.cc index 017dce645..86deb6979 100644 --- a/os/src/test/dynamic_config/main.cc +++ b/os/src/test/dynamic_config/main.cc @@ -42,12 +42,8 @@ int main(int, char **) /* wait for config change */ sig_rec.wait_for_signal(); - try { - Genode::config()->reload(); - parse_config(); - } catch (Genode::Config::Invalid) { - PERR("Error: reloading config failed"); - } + Genode::config()->reload(); + parse_config(); } return 0; } diff --git a/os/src/test/dynamic_config/target.mk b/os/src/test/dynamic_config/target.mk index 45a4db151..aa23a399d 100644 --- a/os/src/test/dynamic_config/target.mk +++ b/os/src/test/dynamic_config/target.mk @@ -1,3 +1,3 @@ TARGET = test-dynamic_config SRC_CC = main.cc -LIBS = base +LIBS = base config diff --git a/os/src/test/part_blk/target.mk b/os/src/test/part_blk/target.mk index 493302aef..521e963e0 100644 --- a/os/src/test/part_blk/target.mk +++ b/os/src/test/part_blk/target.mk @@ -1,3 +1,3 @@ TARGET = test-part SRC_CC = main.cc -LIBS = base +LIBS = base config diff --git a/os/src/test/rom_blk/target.mk b/os/src/test/rom_blk/target.mk index a7ccab986..0db517a1a 100644 --- a/os/src/test/rom_blk/target.mk +++ b/os/src/test/rom_blk/target.mk @@ -1,3 +1,3 @@ TARGET = test-rom_blk SRC_CC = main.cc -LIBS = base +LIBS = base config diff --git a/os/src/test/trace/target.mk b/os/src/test/trace/target.mk index a5a6abb45..9bd4c73f2 100644 --- a/os/src/test/trace/target.mk +++ b/os/src/test/trace/target.mk @@ -1,3 +1,3 @@ TARGET = test-trace SRC_CC = main.cc -LIBS += base +LIBS += base config diff --git a/ports-foc/lib/mk/l4lx.mk b/ports-foc/lib/mk/l4lx.mk index 299450535..250320048 100644 --- a/ports-foc/lib/mk/l4lx.mk +++ b/ports-foc/lib/mk/l4lx.mk @@ -32,6 +32,6 @@ SRC_CC += env.cc \ INC_DIR += $(REP_DIR)/include \ $(REP_DIR)/src/lib/l4lx/include \ -LIBS = base +LIBS = base config vpath %.cc $(REP_DIR)/src/lib/l4lx diff --git a/ports-foc/mk/l4lx.mk b/ports-foc/mk/l4lx.mk index 4a0c02d59..b5afefccf 100644 --- a/ports-foc/mk/l4lx.mk +++ b/ports-foc/mk/l4lx.mk @@ -3,7 +3,7 @@ VERBOSE_LX_MK ?= 0 REQUIRES += foc INC_DIR += $(REP_DIR)/include LIBS = l4lx l4sys -GENODE_LIBS := base base-common startup syscall cxx l4lx l4sys +GENODE_LIBS := base base-common startup syscall cxx l4lx l4sys config GENODE_LIBS := $(foreach l,$(GENODE_LIBS),$(BUILD_BASE_DIR)/var/libcache/$l/$l.lib.a) GENODE_LIBS_SORTED = $(sort $(wildcard $(GENODE_LIBS))) diff --git a/ports-okl4/lib/mk/oklx.mk b/ports-okl4/lib/mk/oklx.mk index df4029687..c7defb131 100644 --- a/ports-okl4/lib/mk/oklx.mk +++ b/ports-okl4/lib/mk/oklx.mk @@ -21,7 +21,7 @@ SRC_CC += iguana_eas.cc \ iguana_tls.cc INC_DIR += $(REP_DIR)/include/oklx_lib INC_DIR += $(REP_DIR)/src/lib/oklx/include -LIBS = base +LIBS = base config # do not produce position-independent code CC_OPT_PIC = diff --git a/ports-okl4/patches/oklx_genode.patch b/ports-okl4/patches/oklx_genode.patch index 31e077cf8..80ebba4b4 100644 --- a/ports-okl4/patches/oklx_genode.patch +++ b/ports-okl4/patches/oklx_genode.patch @@ -192,7 +192,7 @@ diff -urNpB kernel-2.6.23-v2/arch/l4/Makefile contrib/arch/l4/Makefile -libs-y += -lvtimer -lvserial -ll4e -lll -liguana -ll4 -lgcc -lmutex -lcircular_buffer -lc -latomic_ops -lfs +#libs-y += -lvtimer -lvserial -ll4e -lll -liguana -ll4 -lgcc -lmutex -lcircular_buffer -lc -latomic_ops -lfs + -+GENODE_LIBS = base base-common cxx startup \ ++GENODE_LIBS = base base-common cxx startup config \ + oklx + +libs-y += $(addprefix $(GENODE_LIBS_DIR)/,$(foreach l,$(GENODE_LIBS),$l/$l.lib.a)) diff --git a/ports/src/noux/minimal/target.mk b/ports/src/noux/minimal/target.mk index 986280c4f..c35882472 100644 --- a/ports/src/noux/minimal/target.mk +++ b/ports/src/noux/minimal/target.mk @@ -1,5 +1,5 @@ TARGET = noux -LIBS = base alarm +LIBS = base alarm config SRC_CC = main.cc dummy_net.cc INC_DIR += $(PRG_DIR) INC_DIR += $(PRG_DIR)/../ diff --git a/ports/src/noux/net/target.mk b/ports/src/noux/net/target.mk index 67877462b..6a80335c2 100644 --- a/ports/src/noux/net/target.mk +++ b/ports/src/noux/net/target.mk @@ -1,5 +1,5 @@ TARGET = noux_net -LIBS += alarm libc libc_lwip +LIBS += alarm libc libc_lwip config SRC_CC = main.cc net.cc diff --git a/ports/src/test/gdb_monitor_target_config/main.cc b/ports/src/test/gdb_monitor_target_config/main.cc index 8cd7098eb..d52695068 100644 --- a/ports/src/test/gdb_monitor_target_config/main.cc +++ b/ports/src/test/gdb_monitor_target_config/main.cc @@ -20,9 +20,6 @@ int main(void) { try { config()->xml_node().sub_node("test_config_subnode"); - } catch(Config::Invalid) { - PERR("Error: Missing '' node."); - return -1; } catch (Xml_node::Nonexistent_sub_node) { PERR("Error: Missing '' sub node."); return -1; diff --git a/ports/src/test/gdb_monitor_target_config/target.mk b/ports/src/test/gdb_monitor_target_config/target.mk index 44568173e..983ddc65b 100644 --- a/ports/src/test/gdb_monitor_target_config/target.mk +++ b/ports/src/test/gdb_monitor_target_config/target.mk @@ -1,3 +1,3 @@ TARGET = test-gdb_monitor_target_config SRC_CC = main.cc -LIBS = base +LIBS = base config diff --git a/ports/src/vancouver/target.inc b/ports/src/vancouver/target.inc index b4a76ba96..61d6a2b0d 100644 --- a/ports/src/vancouver/target.inc +++ b/ports/src/vancouver/target.inc @@ -11,7 +11,7 @@ ifeq ($(wildcard $(VANCOUVER_DIR)),) REQUIRES += prepare_ports_vancouver endif -LIBS += base blit alarm seoul_libc_support +LIBS += base blit alarm seoul_libc_support config SRC_CC = main.cc nova_user_env.cc device_model_registry.cc SRC_CC += console.cc keyboard.cc network.cc disk.cc SRC_BIN = mono.tff diff --git a/qt4/src/app/qt_avplay/main_window.cpp b/qt4/src/app/qt_avplay/main_window.cpp index e3c090978..163dd9ded 100644 --- a/qt4/src/app/qt_avplay/main_window.cpp +++ b/qt4/src/app/qt_avplay/main_window.cpp @@ -86,9 +86,7 @@ Main_window::Main_window() qDebug() << "filter:" << framebuffer_filter->name << "," << framebuffer_filter->ram_quota; framebuffer_filters.prepend(framebuffer_filter); } - } catch (Config::Invalid) { - } catch (Xml_node::Nonexistent_sub_node) { - } + } catch (Xml_node::Nonexistent_sub_node) { } /* start the filtering framebuffer services */