sculpt: allow for dynamic managed/system state

Until now, the /config/system ROM was not handled by the sculpt manager
but solely managed by the user. Its main purpose was the ability to
reset or power-down the machine by manually modifying the 'state'
attribute. However, down the road, we'd like to enable the sculpt
manager to drive this state, e.g., to implement the multi-staged
loading of drivers, or to drive suspend-resume states.

The support such scenarios, the 'system' state has been moved from
/config/system to /config/managed/system.
This commit is contained in:
Norman Feske 2022-09-28 14:08:50 +02:00 committed by Christian Helmuth
parent 2ccdbf1050
commit f81f075670
4 changed files with 13 additions and 3 deletions

View File

@ -388,7 +388,7 @@ install_config {
<service name="ROM" label_last="usb_policy">
<child name="config_fs_rom" label="usb"/> </service>
<service name="ROM" label_last="system">
<child name="config_fs_rom" label="system"/> </service>
<child name="config_fs_rom" label="managed/system"/> </service>
<service name="ROM" label_last="modem.config">
<child name="config_fs_rom" label="managed/modem"/> </service>
<service name="ROM" label_last="audio.config">
@ -720,7 +720,7 @@ set fd [open [managed_config_path depot_query] w]
puts $fd "<query/>"
close $fd
foreach config { fonts wifi runtime event_filter } {
foreach config { fonts wifi runtime event_filter system } {
set ingredient [single_ingredient $config "default"]
if {$ingredient != ""} {
set from [ingredient_path $config $ingredient]

View File

@ -239,6 +239,8 @@
<child name="config_fs_report" label="managed -> nic_router"/> </service>
<service name="Report" label="fb_drv_config">
<child name="config_fs_report" label="managed -> fb_drv"/> </service>
<service name="Report" label="system_config">
<child name="config_fs_report" label="managed -> system"/> </service>
<service name="Report" label="event_filter_config">
<child name="config_fs_report" label="managed -> event_filter"/> </service>
<service name="Report" label="installation_config">

View File

@ -91,6 +91,14 @@ struct Sculpt::Main : Input_event_handler,
handle_input_event(ev); });
}
Managed_config<Main> _system_config {
_env, "system", "system", *this, &Main::_handle_system_config };
void _handle_system_config(Xml_node)
{
_system_config.try_generate_manually_managed();
}
Signal_handler<Main> _gui_mode_handler {
_env.ep(), *this, &Main::_handle_gui_mode };

View File

@ -340,7 +340,7 @@ class Sculpt::Runtime_config
_vimrc { _r, Type::ROM, "default vim configuration", "config -> vimrc" },
_fonts { _r, Type::ROM, "system font configuration", "config -> managed/fonts" },
_pf_info { _r, Type::ROM, "platform information", "platform_info" },
_system { _r, Type::ROM, "system status", "config -> system" },
_system { _r, Type::ROM, "system status", "config -> managed/system" },
_report { _r, Type::REPORT, "system reports" },
_shape { _r, Type::REPORT, "pointer shape", "shape", Service::Match_label::LAST },
_copy { _r, Type::REPORT, "global clipboard", "clipboard", Service::Match_label::LAST },