mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-18 21:27:56 +00:00
sculpt_manager: set affinity for child
With this commit it is possible to specify the affinity for components directly managed by Sculpt, like drivers.
This commit is contained in:
parent
0f70cbd704
commit
f72fdf77ed
@ -65,6 +65,7 @@ struct Sculpt::Deploy
|
|||||||
_child_states, { .name = "depot_rom",
|
_child_states, { .name = "depot_rom",
|
||||||
.priority = Priority::STORAGE,
|
.priority = Priority::STORAGE,
|
||||||
.cpu_quota = 0,
|
.cpu_quota = 0,
|
||||||
|
.location = { },
|
||||||
.initial = { Ram_quota{24*1024*1024}, Cap_quota{200} },
|
.initial = { Ram_quota{24*1024*1024}, Cap_quota{200} },
|
||||||
.max = { Ram_quota{2*1024*1024*1024UL}, { } } } };
|
.max = { Ram_quota{2*1024*1024*1024UL}, { } } } };
|
||||||
|
|
||||||
@ -72,6 +73,7 @@ struct Sculpt::Deploy
|
|||||||
_child_states, { .name = "dynamic_depot_rom",
|
_child_states, { .name = "dynamic_depot_rom",
|
||||||
.priority = Priority::STORAGE,
|
.priority = Priority::STORAGE,
|
||||||
.cpu_quota = 0,
|
.cpu_quota = 0,
|
||||||
|
.location = { },
|
||||||
.initial = { Ram_quota{8*1024*1024}, Cap_quota{200} },
|
.initial = { Ram_quota{8*1024*1024}, Cap_quota{200} },
|
||||||
.max = { Ram_quota{2*1024*1024*1024UL}, { } } } };
|
.max = { Ram_quota{2*1024*1024*1024UL}, { } } } };
|
||||||
|
|
||||||
|
@ -169,6 +169,7 @@ struct Sculpt::Fb_driver : private Noncopyable
|
|||||||
.name = "fb",
|
.name = "fb",
|
||||||
.priority = Priority::MULTIMEDIA,
|
.priority = Priority::MULTIMEDIA,
|
||||||
.cpu_quota = 20,
|
.cpu_quota = 20,
|
||||||
|
.location = { },
|
||||||
.initial = { Ram_quota { 16*1024*1024 },
|
.initial = { Ram_quota { 16*1024*1024 },
|
||||||
Cap_quota { 250 } },
|
Cap_quota { 250 } },
|
||||||
.max = { } } );
|
.max = { } } );
|
||||||
|
@ -51,6 +51,7 @@ struct Sculpt::Touch_driver : private Noncopyable
|
|||||||
.name = "touch",
|
.name = "touch",
|
||||||
.priority = Priority::MULTIMEDIA,
|
.priority = Priority::MULTIMEDIA,
|
||||||
.cpu_quota = 10,
|
.cpu_quota = 10,
|
||||||
|
.location = { },
|
||||||
.initial = { Ram_quota { 10*1024*1024 },
|
.initial = { Ram_quota { 10*1024*1024 },
|
||||||
Cap_quota { 250 } },
|
Cap_quota { 250 } },
|
||||||
.max = { } } );
|
.max = { } } );
|
||||||
|
@ -36,6 +36,8 @@ struct Sculpt::Child_state : Noncopyable
|
|||||||
Priority priority;
|
Priority priority;
|
||||||
unsigned cpu_quota;
|
unsigned cpu_quota;
|
||||||
|
|
||||||
|
Affinity::Location location;
|
||||||
|
|
||||||
struct Initial { Ram_quota ram; Cap_quota caps; } initial;
|
struct Initial { Ram_quota ram; Cap_quota caps; } initial;
|
||||||
struct Max { Ram_quota ram; Cap_quota caps; } max;
|
struct Max { Ram_quota ram; Cap_quota caps; } max;
|
||||||
|
|
||||||
@ -64,6 +66,11 @@ struct Sculpt::Child_state : Noncopyable
|
|||||||
|
|
||||||
Version _version { 0 };
|
Version _version { 0 };
|
||||||
|
|
||||||
|
static bool _location_valid(Attr const attr)
|
||||||
|
{
|
||||||
|
return attr.location.width() != 0 && attr.location.height() != 0;
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Child_state(Registry<Child_state> ®istry, Attr const attr)
|
Child_state(Registry<Child_state> ®istry, Attr const attr)
|
||||||
@ -75,6 +82,7 @@ struct Sculpt::Child_state : Noncopyable
|
|||||||
Child_state(registry, { .name = name,
|
Child_state(registry, { .name = name,
|
||||||
.priority = priority,
|
.priority = priority,
|
||||||
.cpu_quota = 0,
|
.cpu_quota = 0,
|
||||||
|
.location = { },
|
||||||
.initial = { initial_ram, initial_caps },
|
.initial = { initial_ram, initial_caps },
|
||||||
.max = { } })
|
.max = { } })
|
||||||
{ }
|
{ }
|
||||||
@ -108,6 +116,14 @@ struct Sculpt::Child_state : Noncopyable
|
|||||||
if (_attr.cpu_quota)
|
if (_attr.cpu_quota)
|
||||||
gen_named_node(xml, "resource", "CPU", [&] {
|
gen_named_node(xml, "resource", "CPU", [&] {
|
||||||
xml.attribute("quantum", _attr.cpu_quota); });
|
xml.attribute("quantum", _attr.cpu_quota); });
|
||||||
|
|
||||||
|
if (_location_valid(_attr))
|
||||||
|
xml.node("affinity", [&] {
|
||||||
|
xml.attribute("xpos", _attr.location.xpos());
|
||||||
|
xml.attribute("ypos", _attr.location.ypos());
|
||||||
|
xml.attribute("width", _attr.location.width());
|
||||||
|
xml.attribute("height", _attr.location.height());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,6 +37,7 @@ struct Sculpt::Ram_fs_state : Child_state, File_system
|
|||||||
Child_state(registry, { .name = name,
|
Child_state(registry, { .name = name,
|
||||||
.priority = Priority::LEITZENTRALE,
|
.priority = Priority::LEITZENTRALE,
|
||||||
.cpu_quota = 0,
|
.cpu_quota = 0,
|
||||||
|
.location = { },
|
||||||
.initial = { Ram_quota{1024*1024}, Cap_quota{300} },
|
.initial = { Ram_quota{1024*1024}, Cap_quota{300} },
|
||||||
.max = { Ram_quota{2*1024*1024*1024UL}, { } } }),
|
.max = { Ram_quota{2*1024*1024*1024UL}, { } } }),
|
||||||
File_system(File_system::UNKNOWN)
|
File_system(File_system::UNKNOWN)
|
||||||
|
Loading…
Reference in New Issue
Block a user