mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-25 16:31:06 +00:00
bcf6714eff
The original loader service was primarily motivated by the browser-plugin scenario presented on our live CD. The new version implements a more general session interface, which widens the application scope of the service and, at the same time, reduces its implementation complexity. The complexity reduction is achieved by removing the original limitation of supplying the new sub system as a single binary blob only. The server used to implement heuristics and functionality for dealing with different kinds of blobs such as ELF images or TAR archives. This has been replaced by a session-local ROM service, which can be equipped with an arbitrary number of ROM modules supplied by the loader client prior starting the new sub system. Even though the TAR support has been removed, a separate instance of the 'tar_rom' service can be used within the subsystem to provide the formerly built-in functionality.
112 lines
2.4 KiB
Plaintext
112 lines
2.4 KiB
Plaintext
#
|
|
# Build
|
|
#
|
|
|
|
set build_components {
|
|
core init
|
|
drivers/timer
|
|
server/nitpicker server/loader
|
|
test/nitpicker test/loader
|
|
drivers/framebuffer drivers/pci drivers/input
|
|
}
|
|
|
|
build $build_components
|
|
|
|
create_boot_directory
|
|
|
|
#
|
|
# Generate config
|
|
#
|
|
|
|
append config {
|
|
<config>
|
|
<parent-provides>
|
|
<service name="ROM"/>
|
|
<service name="RAM"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_MEM"/>
|
|
<service name="IO_PORT"/>
|
|
<service name="CAP"/>
|
|
<service name="PD"/>
|
|
<service name="RM"/>
|
|
<service name="CPU"/>
|
|
<service name="LOG"/>
|
|
<service name="SIGNAL"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</default-route>}
|
|
|
|
append_if [have_spec sdl] config {
|
|
<start name="fb_sdl">
|
|
<resource name="RAM" quantum="4M"/>
|
|
<provides>
|
|
<service name="Input"/>
|
|
<service name="Framebuffer"/>
|
|
</provides>
|
|
</start>}
|
|
|
|
append_if [have_spec pci] config {
|
|
<start name="pci_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="PCI"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec vesa] config {
|
|
<start name="vesa_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Framebuffer"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec pl11x] config {
|
|
<start name="pl11x_drv">
|
|
<resource name="RAM" quantum="2M"/>
|
|
<provides><service name="Framebuffer"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec ps2] config {
|
|
<start name="ps2_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Input"/></provides>
|
|
</start> }
|
|
|
|
append config {
|
|
<start name="timer">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Timer"/></provides>
|
|
</start>
|
|
<start name="nitpicker">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Nitpicker"/></provides>
|
|
</start>
|
|
<start name="loader">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Loader"/></provides>
|
|
</start>
|
|
<start name="test-loader">
|
|
<resource name="RAM" quantum="1G"/>
|
|
</start>
|
|
</config>}
|
|
|
|
install_config $config
|
|
|
|
#
|
|
# Boot modules
|
|
#
|
|
|
|
# generic modules
|
|
set boot_modules { core init timer nitpicker testnit loader test-loader }
|
|
|
|
# platform-specific modules
|
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
|
lappend_if [have_spec pci] boot_modules pci_drv
|
|
lappend_if [have_spec vesa] boot_modules vesa_drv
|
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
|
lappend_if [have_spec pl11x] boot_modules pl11x_drv
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
append qemu_args " -m 256 "
|
|
|
|
run_genode_until forever
|