2
0
Fork 0

genodeSources: 20.05 -> 20.08

This commit is contained in:
Emery Hemingway 2020-08-29 17:31:53 +02:00
parent 1f53f25419
commit c3385aedd0
35 changed files with 223 additions and 611 deletions

View File

@ -30,7 +30,7 @@ let drivers =
, ServiceRoute.child "Block" "dynamic" , ServiceRoute.child "Block" "dynamic"
, ServiceRoute.child "Usb" "usb_drv" , ServiceRoute.child "Usb" "usb_drv"
, ServiceRoute.child "Platform" "platform_drv" , ServiceRoute.child "Platform" "platform_drv"
, ServiceRoute.child "Input" "input_filter" , ServiceRoute.child "Input" "event_filter"
] ]
, children = toMap , children = toMap
{ rom_reporter = { rom_reporter =
@ -169,10 +169,10 @@ let drivers =
, provides = [ "Input" ] , provides = [ "Input" ]
, routes = [ ServiceRoute.child "Platform" "platform_drv" ] , routes = [ ServiceRoute.child "Platform" "platform_drv" ]
} }
, input_filter = , event_filter =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "input_filter" , binary = "event_filter"
, priority = 1 , priority = 1
, resources = Resources::{ ram = Genode.units.MiB 2 } , resources = Resources::{ ram = Genode.units.MiB 2 }
, provides = [ "Input" ] , provides = [ "Input" ]
@ -180,7 +180,7 @@ let drivers =
[ ServiceRoute.parentLabel [ ServiceRoute.parentLabel
"ROM" "ROM"
(Some "config") (Some "config")
(Some "input_filter.config") (Some "event_filter.config")
, ServiceRoute.childLabel , ServiceRoute.childLabel
"Input" "Input"
"ps2_drv" "ps2_drv"

View File

@ -136,31 +136,7 @@
checks = checks =
# Checks for continous testing # Checks for continous testing
forAllCrossSystems ({ system, localSystem, crossSystem }: forAllCrossSystems ({ system, localSystem, crossSystem }:
let import ./tests {
nixos = nixpkgs.lib.nixosSystem {
system = localSystem;
modules = [
self.nixosModules.genodeHost
({ modulesPath, ... }: {
imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ];
boot.loader.grub.extraEntriesBeforeNixOS = true;
virtualisation = {
cores = 2;
memorySize = 1024;
useBootLoader = true;
qemu = {
options =
[ "-machine q35" "-cpu phenom" "-serial mon:stdio" ];
networkingOptions = [
"-net nic,netdev=user.0,model=e1000"
"-netdev user,id=user.0\${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}"
];
};
};
})
];
};
in import ./tests {
inherit self; inherit self;
apps = self.apps.${system}; apps = self.apps.${system};
localPackages = nixpkgsFor.${localSystem}; localPackages = nixpkgsFor.${localSystem};
@ -176,62 +152,6 @@
self.packages.${system}.genodeSources.ports); self.packages.${system}.genodeSources.ports);
}; };
nixosModule = nixos.config.system.build.vm;
nixosXML = nixos.config.system.build.genode.xml;
nixosGuest = let
nixos = nixpkgs.lib.nixosSystem {
system = localSystem;
modules = [
self.nixosModules.genodeHost
({ modulesPath, ... }: {
imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ];
boot.loader.grub.extraEntriesBeforeNixOS = true;
virtualisation = {
cores = 2;
memorySize = 1024;
useBootLoader = true;
qemu = {
options =
[ "-machine q35" "-cpu phenom" "-serial mon:stdio" ];
networkingOptions = [
"-net nic,netdev=user.0,model=e1000"
"-netdev user,id=user.0\${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}"
];
};
};
genode.guests = {
flakeCheck = {
config = { config, lib, pkgs, ... }: {
networking.firewall.allowedTCPPorts = [ 80 ];
services.mingetty.autologinUser =
lib.mkDefault "root";
services.nginx.enable = true;
services.openssh.permitRootLogin =
lib.mkDefault "yes";
services.sshd.enable = true;
users.users.root.password = "nixos";
virtualbox.memorySize = 128;
};
};
azimuth = {
bootFormat = "vdi";
config = { config, lib, pkgs, ... }: {
services.cage = {
enable = true;
program = "${pkgs.azimuth}/bin/tor-azimuth";
};
users.users.demo.isNormalUser = true;
virtualbox.memorySize = 1024;
};
};
};
})
];
};
in nixos.config.system.build.vm;
}); });
}; };

View File

@ -99,23 +99,23 @@
bootDescription = buildBootDescription { bootDescription = buildBootDescription {
inherit initConfig; inherit initConfig;
imageInputs = [ legacyPackages'.bash pkgs'.show_input ] imageInputs = [ legacyPackages'.bash ] ++ map pkgs'.genodeSources.depot
++ map pkgs'.genodeSources.depot ([ ([
"acpi_drv" "acpi_drv"
"ahci_drv" "ahci_drv"
"cached_fs_rom" "cached_fs_rom"
"chroot" "chroot"
"decorator" "decorator"
"event_filter"
"fs_log" "fs_log"
"gui_fb"
"init" "init"
"input_filter"
"ipxe_nic_drv" "ipxe_nic_drv"
"libc" "libc"
"libiconv" "libiconv"
"log_core" "log_core"
"nit_fb"
"nitpicker"
"nic_router" "nic_router"
"nitpicker"
"part_block" "part_block"
"platform_drv" "platform_drv"
"posix" "posix"

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude let Prelude = Genode.Prelude
@ -13,8 +12,8 @@ let Resources = Init.Resources
let ServiceRoute = Init.ServiceRoute let ServiceRoute = Init.ServiceRoute
in λ(params : { bash : Text, coreutils : Text, path : Text }) in λ(params : { bash : Text, coreutils : Text, path : Text })
let init = let init =
Init::{ Init::{
, verbose = True , verbose = True
, routes = , routes =
@ -22,12 +21,12 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
Text Text
Init.ServiceRoute.Type Init.ServiceRoute.Type
Init.ServiceRoute.parent Init.ServiceRoute.parent
[ "Nitpicker", "Rtc", "Timer" ] [ "Gui", "Rtc", "Timer" ]
, children = toMap , children = toMap
{ nit_fb = { gui_fb =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "nit_fb" , binary = "gui_fb"
, config = Init.Config::{ , config = Init.Config::{
, attributes = toMap , attributes = toMap
{ xpos = "10" { xpos = "10"
@ -71,8 +70,8 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
, ram = Genode.units.MiB 4 , ram = Genode.units.MiB 4
} }
, routes = , routes =
[ ServiceRoute.child "Framebuffer" "nit_fb" [ ServiceRoute.child "Framebuffer" "gui_fb"
, ServiceRoute.child "Input" "nit_fb" , ServiceRoute.child "Input" "gui_fb"
, ServiceRoute.parent "File_system" , ServiceRoute.parent "File_system"
] ]
} }
@ -141,8 +140,8 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
# Prelude.List.map # Prelude.List.map
Text Text
XML.Type XML.Type
( λ(x : Text) ( λ(x : Text)
XML.leaf XML.leaf
{ name = "arg" { name = "arg"
, attributes = toMap { value = x } , attributes = toMap { value = x }
} }
@ -157,13 +156,13 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
, routes = , routes =
[ Init.ServiceRoute.child "File_system" "vfs" [ Init.ServiceRoute.child "File_system" "vfs"
, { service = , { service =
{ name = "ROM" { name = "ROM"
, label = , label =
Init.LabelSelector.Type.Partial Init.LabelSelector.Type.Partial
{ prefix = Some "/nix/store/" { prefix = Some "/nix/store/"
, suffix = None Text , suffix = None Text
} }
} }
, route = , route =
Init.Route.Type.Child Init.Route.Type.Child
{ name = "store_rom" { name = "store_rom"
@ -181,7 +180,7 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
Init.Attributes::{ Init.Attributes::{
, routes = , routes =
[ ServiceRoute.parent "File_system" [ ServiceRoute.parent "File_system"
, ServiceRoute.parent "Nitpicker" , ServiceRoute.parent "Gui"
, ServiceRoute.parent "Rtc" , ServiceRoute.parent "Rtc"
, ServiceRoute.parent "Timer" , ServiceRoute.parent "Timer"
] ]

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Init = Genode.Init let Init = Genode.Init

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude let Prelude = Genode.Prelude
@ -23,12 +22,12 @@ in Init::{
Text Text
Init.ServiceRoute.Type Init.ServiceRoute.Type
Init.ServiceRoute.parent Init.ServiceRoute.parent
[ "Nitpicker", "Rtc", "Timer" ] [ "Gui", "Rtc", "Timer" ]
, children = toMap , children = toMap
{ nit_fb = { gui_fb =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "nit_fb" , binary = "gui_fb"
, config = Init.Config::{ , config = Init.Config::{
, attributes = toMap , attributes = toMap
{ initial_width = "600", initial_height = "600" } { initial_width = "600", initial_height = "600" }
@ -64,8 +63,8 @@ in Init::{
, provides = [ "Terminal" ] , provides = [ "Terminal" ]
, resources = Resources::{ caps = 256, ram = Genode.units.MiB 4 } , resources = Resources::{ caps = 256, ram = Genode.units.MiB 4 }
, routes = , routes =
[ ServiceRoute.child "Framebuffer" "nit_fb" [ ServiceRoute.child "Framebuffer" "gui_fb"
, ServiceRoute.child "Input" "nit_fb" , ServiceRoute.child "Input" "gui_fb"
, ServiceRoute.parent "File_system" , ServiceRoute.parent "File_system"
] ]
} }

View File

@ -20,18 +20,18 @@ let Map =
let boolToAttr = λ(_ : Bool) → if _ then "yes" else "no" let boolToAttr = λ(_ : Bool) → if _ then "yes" else "no"
let keyToXML = let keyToXML =
λ(x : Prelude.Map.Entry Text Key) λ(x : Prelude.Map.Entry Text Key)
XML.leaf XML.leaf
{ name = "key" { name = "key"
, attributes = , attributes =
[ merge [ merge
{ Ascii = { Ascii =
λ(_ : Natural) λ(_ : Natural)
{ mapKey = "ascii", mapValue = Prelude.Natural.show _ } { mapKey = "ascii", mapValue = Prelude.Natural.show _ }
, Char = λ(_ : Text) → { mapKey = "char", mapValue = _ } , Char = λ(_ : Text) → { mapKey = "char", mapValue = _ }
, Code = , Code =
λ(_ : Natural) λ(_ : Natural)
{ mapKey = "code", mapValue = Prelude.Natural.show _ } { mapKey = "code", mapValue = Prelude.Natural.show _ }
} }
x.mapValue x.mapValue
, { mapKey = "name", mapValue = x.mapKey } , { mapKey = "name", mapValue = x.mapKey }
@ -39,8 +39,8 @@ let keyToXML =
} }
let mapToXML = let mapToXML =
λ(map : Map.Type) λ(map : Map.Type)
XML.element XML.element
{ name = "map" { name = "map"
, attributes = toMap , attributes = toMap
{ mod1 = boolToAttr map.mod1 { mod1 = boolToAttr map.mod1

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude let Prelude = Genode.Prelude
@ -20,22 +19,22 @@ let DefaultPolicy = Init.Config.DefaultPolicy
let LabelSelector = Init.LabelSelector let LabelSelector = Init.LabelSelector
let label = let label =
λ(label : Text) λ(label : Text)
{ local = label, route = label } : Child.Attributes.Label { local = label, route = label } : Child.Attributes.Label
let rootInit = let rootInit =
λ ( params λ ( params
: { fbDriver : Init.Child.Type : { fbDriver : Init.Child.Type
, guests : Init.Children.Type , guests : Init.Children.Type
, inputFilterChargens : List XML.Type , inputFilterChargens : List XML.Type
, partitionType : Text , partitionType : Text
, wm : Init.Type , wm : Init.Type
, graphical-log : Init.Type , graphical-log : Init.Type
, fs-log : Init.Type , fs-log : Init.Type
, systemLabel : Text , systemLabel : Text
} }
) )
Init::{ Init::{
, children = toMap , children = toMap
{ timer = { timer =
Child.flat Child.flat
@ -113,8 +112,8 @@ let rootInit =
# Prelude.List.map # Prelude.List.map
PciPolicy/Type PciPolicy/Type
XML.Type XML.Type
( λ(policy : PciPolicy/Type) ( λ(policy : PciPolicy/Type)
XML.element XML.element
{ name = "policy" { name = "policy"
, attributes = toMap , attributes = toMap
{ label_suffix = policy.labelSuffix } { label_suffix = policy.labelSuffix }
@ -141,24 +140,22 @@ let rootInit =
} }
} }
, framebuffer = params.fbDriver , framebuffer = params.fbDriver
, input_filter = , event_filter =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "input_filter" , binary = "event_filter"
, config = , config =
let key = let key =
λ(name : Text) λ(name : Text) →
→ XML.leaf XML.leaf
{ name = "key" { name = "key", attributes = toMap { name } }
, attributes = toMap { name = name }
}
let remap = let remap =
λ(name : Text) λ(name : Text)
λ(to : Text) λ(to : Text)
XML.leaf XML.leaf
{ name = "key" { name = "key"
, attributes = toMap { name = name, to = to } , attributes = toMap { name, to }
} }
in Init.Config::{ in Init.Config::{
@ -243,7 +240,7 @@ let rootInit =
[ ServiceRoute.parentLabel [ ServiceRoute.parentLabel
"ROM" "ROM"
(Some "config") (Some "config")
(Some "config -> input_filter.config") (Some "config -> event_filter.config")
, ServiceRoute.childLabel , ServiceRoute.childLabel
"Input" "Input"
"ps2_drv" "ps2_drv"
@ -254,6 +251,7 @@ let rootInit =
"usb_drv" "usb_drv"
(Some "usb") (Some "usb")
(None Text) (None Text)
, ServiceRoute.child "Capture" "nitpicker"
] ]
} }
, ps2_drv = , ps2_drv =
@ -303,11 +301,11 @@ let rootInit =
Init.toChild Init.toChild
params.wm params.wm
Init.Attributes::{ Init.Attributes::{
, provides = [ "Nitpicker", "Report", "ROM" ] , provides = [ "Capture", "Event", "Gui", "Report", "ROM" ]
, romReports = [ label "clipboard", label "shape" ] , romReports = [ label "clipboard", label "shape" ]
, routes = , routes =
[ ServiceRoute.child "Framebuffer" "framebuffer" [ ServiceRoute.child "Framebuffer" "framebuffer"
, ServiceRoute.child "Input" "input_filter" , ServiceRoute.child "Input" "event_filter"
] ]
} }
, fonts_fs = , fonts_fs =
@ -408,7 +406,7 @@ let rootInit =
params.graphical-log params.graphical-log
Init.Attributes::{ Init.Attributes::{
, routes = , routes =
[ ServiceRoute.child "Nitpicker" "wm" [ ServiceRoute.child "Gui" "wm"
, ServiceRoute.child "File_system" "fonts_fs" , ServiceRoute.child "File_system" "fonts_fs"
] ]
} }
@ -474,8 +472,8 @@ let rootInit =
Prelude.List.map Prelude.List.map
Natural Natural
XML.Type XML.Type
( λ(i : Natural) ( λ(i : Natural)
XML.leaf XML.leaf
{ name = "policy" { name = "policy"
, attributes = , attributes =
let partition = let partition =
@ -483,7 +481,7 @@ let rootInit =
in toMap in toMap
{ label_suffix = " ${partition}" { label_suffix = " ${partition}"
, partition = partition , partition
, writeable = "yes" , writeable = "yes"
} }
} }
@ -663,8 +661,8 @@ let rootInit =
# Prelude.List.map # Prelude.List.map
Text Text
XML.Type XML.Type
( λ(proto : Text) ( λ(proto : Text)
XML.element XML.element
{ name = proto { name = proto
, attributes = toMap , attributes = toMap
{ dst = "0.0.0.0/0" { dst = "0.0.0.0/0"
@ -696,11 +694,11 @@ let rootInit =
Init.Attributes::{ Init.Attributes::{
, routes = , routes =
[ ServiceRoute.parent "VM" [ ServiceRoute.parent "VM"
, ServiceRoute.child "Nitpicker" "wm" , ServiceRoute.child "Gui" "wm"
, { service = , { service =
{ name = "File_system" { name = "File_system"
, label = LabelSelector.last "fonts" , label = LabelSelector.last "fonts"
} }
, route = , route =
Init.Route.Type.Child Init.Route.Type.Child
{ name = "fonts_fs" { name = "fonts_fs"
@ -709,9 +707,9 @@ let rootInit =
} }
} }
, { service = , { service =
{ name = "File_system" { name = "File_system"
, label = LabelSelector.suffix "nix/store" , label = LabelSelector.suffix "nix/store"
} }
, route = , route =
Init.Route.Type.Child Init.Route.Type.Child
{ name = "file_system" { name = "file_system"
@ -720,9 +718,9 @@ let rootInit =
} }
} }
, { service = , { service =
{ name = "File_system" { name = "File_system"
, label = LabelSelector.prefix "console" , label = LabelSelector.prefix "console"
} }
, route = , route =
Init.Route.Type.Child Init.Route.Type.Child
{ name = "file_system" { name = "file_system"

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude let Prelude = Genode.Prelude
@ -38,5 +37,5 @@ in Child.flat
} }
, resources = Resources::{ ram = Genode.units.MiB 32 } , resources = Resources::{ ram = Genode.units.MiB 32 }
, routes = , routes =
[ ServiceRoute.parent "File_system", ServiceRoute.parent "Nitpicker" ] [ ServiceRoute.parent "File_system", ServiceRoute.parent "Gui" ]
} }

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude let Prelude = Genode.Prelude
@ -14,11 +13,11 @@ let Resources = Init.Resources
let ServiceRoute = Init.ServiceRoute let ServiceRoute = Init.ServiceRoute
let Vfs/inline = let Vfs/inline =
λ(name : Text) λ(name : Text)
λ(body : Text) λ(body : Text)
XML.element XML.element
{ name = "inline" { name = "inline"
, attributes = toMap { name = name } , attributes = toMap { name }
, content = [ XML.text body ] , content = [ XML.text body ]
} }
@ -35,8 +34,8 @@ let Params
} }
let toVbox = let toVbox =
λ(params : Params) λ(params : Params)
let vboxConfig = let vboxConfig =
let hardDisks = let hardDisks =
merge merge
{ ISO = XML.text "" { ISO = XML.text ""
@ -158,11 +157,9 @@ let toVbox =
, attributes = XML.emptyAttributes , attributes = XML.emptyAttributes
, content = , content =
let tag = let tag =
λ(name : Text) λ(name : Text) →
→ XML.leaf XML.leaf
{ name = name { name, attributes = XML.emptyAttributes }
, attributes = XML.emptyAttributes
}
let mutableVfs = let mutableVfs =
let fsNode = let fsNode =
@ -224,7 +221,7 @@ let toVbox =
, routes = , routes =
[ ServiceRoute.parent "File_system" [ ServiceRoute.parent "File_system"
, ServiceRoute.parent "Nic" , ServiceRoute.parent "Nic"
, ServiceRoute.parent "Nitpicker" , ServiceRoute.parent "Gui"
, ServiceRoute.parent "Rtc" , ServiceRoute.parent "Rtc"
, ServiceRoute.parent "Timer" , ServiceRoute.parent "Timer"
, ServiceRoute.parent "VM" , ServiceRoute.parent "VM"

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude let Prelude = Genode.Prelude
@ -20,8 +19,8 @@ let DefaultPolicy = Init.Config.DefaultPolicy
let LabelSelector = Init.LabelSelector let LabelSelector = Init.LabelSelector
let label = let label =
λ(label : Text) λ(label : Text)
{ local = label, route = label } : Child.Attributes.Label { local = label, route = label } : Child.Attributes.Label
in Init::{ in Init::{
, children = toMap , children = toMap
@ -64,7 +63,7 @@ in Init::{
, attributes = toMap { domain = "default" } , attributes = toMap { domain = "default" }
} }
} }
, provides = [ "Nitpicker" ] , provides = [ "Gui", "Capture", "Event" ]
, resources = Resources::{ caps = 256, ram = Genode.units.MiB 64 } , resources = Resources::{ caps = 256, ram = Genode.units.MiB 64 }
, routes = , routes =
[ ServiceRoute.parent "Framebuffer" [ ServiceRoute.parent "Framebuffer"
@ -75,7 +74,7 @@ in Init::{
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "pointer" , binary = "pointer"
, routes = [ ServiceRoute.child "Nitpicker" "nitpicker" ] , routes = [ ServiceRoute.child "Gui" "nitpicker" ]
} }
, wm = , wm =
Child.flat Child.flat
@ -94,7 +93,7 @@ in Init::{
] ]
, defaultPolicy = Some DefaultPolicy::{=} , defaultPolicy = Some DefaultPolicy::{=}
} }
, provides = [ "Nitpicker", "Report", "ROM" ] , provides = [ "Gui", "Report", "ROM" ]
, reportRoms = [ label "focus", label "resize_request" ] , reportRoms = [ label "focus", label "resize_request" ]
, romReports = , romReports =
[ label "focus_request" [ label "focus_request"
@ -108,11 +107,11 @@ in Init::{
} }
, routes = , routes =
[ ServiceRoute.childLabel [ ServiceRoute.childLabel
"Nitpicker" "Gui"
"nitpicker" "nitpicker"
(Some "") (Some "")
(Some "focus") (Some "focus")
, ServiceRoute.child "Nitpicker" "nitpicker" , ServiceRoute.child "Gui" "nitpicker"
, ServiceRoute.parentLabel , ServiceRoute.parentLabel
"Report" "Report"
(Some "clipboard") (Some "clipboard")
@ -175,7 +174,7 @@ in Init::{
'' ''
] ]
} }
, provides = [ "Nitpicker", "Report", "ROM" ] , provides = [ "Gui", "Report", "ROM" ]
, romReports = , romReports =
[ label "focus" [ label "focus"
, label "resize_request" , label "resize_request"
@ -194,7 +193,7 @@ in Init::{
, caps = 256 , caps = 256
, ram = Genode.units.MiB 8 , ram = Genode.units.MiB 8
} }
, routes = [ ServiceRoute.child "Nitpicker" "wm" ] , routes = [ ServiceRoute.child "Gui" "wm" ]
} }
, decorator = , decorator =
Child.flat Child.flat
@ -217,20 +216,22 @@ in Init::{
] ]
, defaultPolicy = Some DefaultPolicy::{=} , defaultPolicy = Some DefaultPolicy::{=}
} }
, provides = [ "Nitpicker", "Report", "ROM" ] , provides = [ "Gui", "Report", "ROM" ]
, reportRoms = [ label "window_layout", label "pointer" ] , reportRoms = [ label "window_layout", label "pointer" ]
, romReports = [ label "decorator_margins", label "hover" ] , romReports = [ label "decorator_margins", label "hover" ]
, resources = Init.Resources::{ , resources = Init.Resources::{
, caps = 128 , caps = 128
, ram = Genode.units.MiB 12 , ram = Genode.units.MiB 12
} }
, routes = [ ServiceRoute.child "Nitpicker" "wm" ] , routes = [ ServiceRoute.child "Gui" "wm" ]
} }
} }
, routes = [ ServiceRoute.parent "Timer" ] , routes = [ ServiceRoute.parent "Timer" ]
, services = , services =
[ ServiceRoute.child "Nitpicker" "wm" [ ServiceRoute.child "Gui" "wm"
, ServiceRoute.child "Report" "wm" , ServiceRoute.child "Report" "wm"
, ServiceRoute.child "ROM" "wm" , ServiceRoute.child "ROM" "wm"
, ServiceRoute.child "Event" "Nitpicker"
, ServiceRoute.child "Capture" "Nitpicker"
] ]
} }

View File

@ -20,18 +20,18 @@ let Map =
let boolToAttr = λ(_ : Bool) → if _ then "yes" else "no" let boolToAttr = λ(_ : Bool) → if _ then "yes" else "no"
let keyToXML = let keyToXML =
λ(x : Prelude.Map.Entry Text Key) λ(x : Prelude.Map.Entry Text Key)
XML.leaf XML.leaf
{ name = "key" { name = "key"
, attributes = , attributes =
[ merge [ merge
{ Ascii = { Ascii =
λ(_ : Natural) λ(_ : Natural)
{ mapKey = "ascii", mapValue = Prelude.Natural.show _ } { mapKey = "ascii", mapValue = Prelude.Natural.show _ }
, Char = λ(_ : Text) → { mapKey = "char", mapValue = _ } , Char = λ(_ : Text) → { mapKey = "char", mapValue = _ }
, Code = , Code =
λ(_ : Natural) λ(_ : Natural)
{ mapKey = "code", mapValue = Prelude.Natural.show _ } { mapKey = "code", mapValue = Prelude.Natural.show _ }
} }
x.mapValue x.mapValue
, { mapKey = "name", mapValue = x.mapKey } , { mapKey = "name", mapValue = x.mapKey }
@ -39,8 +39,8 @@ let keyToXML =
} }
let mapToXML = let mapToXML =
λ(map : Map.Type) λ(map : Map.Type)
XML.element XML.element
{ name = "map" { name = "map"
, attributes = toMap , attributes = toMap
{ mod1 = boolToAttr map.mod1 { mod1 = boolToAttr map.mod1

View File

@ -1,6 +1,6 @@
commit 2db637f21b83701d21aa66295cd35c737649ecdc commit b7d219220e10699dedb2c90e2d4010cbfab74a86
Author: Emery Hemingway <ehmry@posteo.net> Author: Emery Hemingway <ehmry@posteo.net>
Date: Tue May 5 21:39:21 2020 +0530 Date: Sun Aug 30 10:47:51 2020 +0200
Produce libraries with conventional names Produce libraries with conventional names
@ -33,10 +33,10 @@ index 190dd92aa1..6611d05d2a 100644
echo "endif") >> $(LIB_DEP_FILE) echo "endif") >> $(LIB_DEP_FILE)
# #
diff --git a/repos/base/mk/generic.mk b/repos/base/mk/generic.mk diff --git a/repos/base/mk/generic.mk b/repos/base/mk/generic.mk
index d551ac205b..e23fade62f 100644 index 0531c08d58..4eefc6822c 100644
--- a/repos/base/mk/generic.mk --- a/repos/base/mk/generic.mk
+++ b/repos/base/mk/generic.mk +++ b/repos/base/mk/generic.mk
@@ -129,7 +129,7 @@ binary_%.o: % @@ -139,7 +139,7 @@ binary_%.o: %
# This is a problem in situations where the undefined symbol is resolved by an # This is a problem in situations where the undefined symbol is resolved by an
# archive rather than the target. I.e., when linking posix.lib.a (which # archive rather than the target. I.e., when linking posix.lib.a (which
# provides 'Libc::Component::construct'), the 'construct' function is merely # provides 'Libc::Component::construct'), the 'construct' function is merely
@ -45,7 +45,7 @@ index d551ac205b..e23fade62f 100644
# reference apparently does not suffice to keep the posix.lib.a's symbol. By # reference apparently does not suffice to keep the posix.lib.a's symbol. By
# adding a hard dependency, we force the linker to resolve the symbol and don't # adding a hard dependency, we force the linker to resolve the symbol and don't
# drop posix.lib.a. # drop posix.lib.a.
@@ -164,12 +164,17 @@ endif @@ -174,12 +174,17 @@ endif
# time a user of the library is linked, the ABI stub should be used instead of # time a user of the library is linked, the ABI stub should be used instead of
# the library. # the library.
# #
@ -67,10 +67,23 @@ index d551ac205b..e23fade62f 100644
- $(VERBOSE)ln -sf $(call select_so,$@) $@ - $(VERBOSE)ln -sf $(call select_so,$@) $@
+ $(VERBOSE)ln -sf $(call select_so,$@) $(patsubst liblib%,lib%,$@) + $(VERBOSE)ln -sf $(call select_so,$@) $(patsubst liblib%,lib%,$@)
diff --git a/repos/base/mk/lib.mk b/repos/base/mk/lib.mk diff --git a/repos/base/mk/lib.mk b/repos/base/mk/lib.mk
index bfee2c7420..fac49c7298 100644 index c8ac049563..776aea82aa 100644
--- a/repos/base/mk/lib.mk --- a/repos/base/mk/lib.mk
+++ b/repos/base/mk/lib.mk +++ b/repos/base/mk/lib.mk
@@ -123,14 +123,20 @@ message: @@ -95,7 +95,12 @@ endif
#
ifneq ($(SYMBOLS),)
ABI_SO := $(addsuffix .abi.so,$(LIB))
+ifeq ($(LIB),ld)
ABI_SONAME := $(addsuffix .lib.so,$(LIB))
+else
+ABI_SONAME := $(addsuffix .so,$(addprefix lib,$(patsubst lib%,%,$(LIB))))
+endif
+
$(LIB).symbols:
$(VERBOSE)ln -sf $(SYMBOLS) $@
@@ -124,14 +129,20 @@ message:
include $(BASE_DIR)/mk/generic.mk include $(BASE_DIR)/mk/generic.mk
# #
@ -93,7 +106,7 @@ index bfee2c7420..fac49c7298 100644
INSTALL_SO := $(INSTALL_DIR)/$(LIB_SO) INSTALL_SO := $(INSTALL_DIR)/$(LIB_SO)
DEBUG_SO := $(DEBUG_DIR)/$(LIB_SO) DEBUG_SO := $(DEBUG_DIR)/$(LIB_SO)
endif endif
@@ -150,7 +156,7 @@ ifneq ($(LIB_SO),) @@ -151,7 +162,7 @@ ifneq ($(LIB_SO),)
endif endif
# #
@ -102,7 +115,7 @@ index bfee2c7420..fac49c7298 100644
# #
LIB_TAG := $(addsuffix .lib.tag,$(LIB)) LIB_TAG := $(addsuffix .lib.tag,$(LIB))
all: $(LIB_TAG) all: $(LIB_TAG)
@@ -203,7 +209,7 @@ STATIC_LIBS := $(sort $(foreach l,$(ARCHIVES:.lib.a=),$(LIB_CACHE_DIR)/$l/ @@ -204,7 +215,7 @@ STATIC_LIBS := $(sort $(foreach l,$(ARCHIVES:.lib.a=),$(LIB_CACHE_DIR)/$l/
STATIC_LIBS_BRIEF := $(subst $(LIB_CACHE_DIR),$$libs,$(STATIC_LIBS)) STATIC_LIBS_BRIEF := $(subst $(LIB_CACHE_DIR),$$libs,$(STATIC_LIBS))
# #
@ -162,10 +175,10 @@ index 73fd407db7..554d943763 100644
diff --git a/repos/libports/src/lib/libc/kernel.cc b/repos/libports/src/lib/libc/kernel.cc diff --git a/repos/libports/src/lib/libc/kernel.cc b/repos/libports/src/lib/libc/kernel.cc
index 5dd4b2a2d6..430295e7d5 100644 index b1bca7c80f..a4bebaeae1 100644
--- a/repos/libports/src/lib/libc/kernel.cc --- a/repos/libports/src/lib/libc/kernel.cc
+++ b/repos/libports/src/lib/libc/kernel.cc +++ b/repos/libports/src/lib/libc/kernel.cc
@@ -308,10 +308,10 @@ void Libc::Kernel::_clone_state_from_parent() @@ -418,10 +418,10 @@ void Libc::Kernel::_clone_state_from_parent()
* regular startup of the child. * regular startup of the child.
*/ */
bool const blacklisted = (name == "ld.lib.so") bool const blacklisted = (name == "ld.lib.so")

View File

@ -1,7 +1,7 @@
{ buildPackages, targetPackages }: { buildPackages, targetPackages }:
let let
version = "20.05"; version = "20.08";
# Update ./port-versions.nix bumping the version and updateing the sources. # Update ./port-versions.nix bumping the version and updateing the sources.
platform = targetPackages.targetPlatform; platform = targetPackages.targetPlatform;
@ -32,7 +32,7 @@ let
inherit version; inherit version;
src = fetchurl { src = fetchurl {
url = "https://github.com/genodelabs/genode/archive/${version}.tar.gz"; url = "https://github.com/genodelabs/genode/archive/${version}.tar.gz";
hash = "sha256-5Fd8ywGbDtQF+9yDZ5xAQ7l1Vzh1jQAQeqVj+EtO1us="; hash = "sha256-tFuLVuaN5F9lAEtn0lpd0MgPQpOcFixOtOsQ/z4TwPI=";
}; };
nativeBuildInputs = [ expect gnumake tcl ]; nativeBuildInputs = [ expect gnumake tcl ];
patches = [ ./LIB.patch ./binary-labels.patch ]; patches = [ ./LIB.patch ./binary-labels.patch ];

View File

@ -6,11 +6,11 @@ Date: Wed Apr 29 03:34:15 2020 +0530
diff --git a/repos/os/src/server/input_filter/chargen_source.h b/repos/os/src/server/input_filter/chargen_source.h diff --git a/repos/os/src/server/input_filter/chargen_source.h b/repos/os/src/server/input_filter/chargen_source.h
index 06fc657c25..3525fd6f34 100644 index 06fc657c25..3525fd6f34 100644
--- a/repos/os/src/server/input_filter/chargen_source.h --- a/repos/os/src/server/event_filter/chargen_source.h
+++ b/repos/os/src/server/input_filter/chargen_source.h +++ b/repos/os/src/server/event_filter/chargen_source.h
@@ -684,9 +684,10 @@ class Input_filter::Chargen_source : public Source, Source::Sink @@ -684,9 +684,10 @@ class Input_filter::Chargen_source : public Source, Source::Sink
node.for_each_sub_node("key", [&] (Xml_node key_node) { node.for_each_sub_node("key", [&] (Xml_node key_node) {
Key_name const name = key_node.attribute_value("name", Key_name()); Key_name const name = key_node.attribute_value("name", Key_name());
- Input::Keycode const key = key_code_by_name(name); - Input::Keycode const key = key_code_by_name(name);
- -
@ -20,5 +20,5 @@ index 06fc657c25..3525fd6f34 100644
+ new (_alloc) Modifier(_modifiers, id, key); + new (_alloc) Modifier(_modifiers, id, key);
+ } catch (Unknown_key) { warning("unrecognized key name ", name); } + } catch (Unknown_key) { warning("unrecognized key name ", name); }
}); });
node.for_each_sub_node("rom", [&] (Xml_node rom_node) { node.for_each_sub_node("rom", [&] (Xml_node rom_node) {

View File

@ -85,30 +85,3 @@ index 150640ddf3..e511897600 100644
DUMMY(int , -1, getpriority, (int, int)) DUMMY(int , -1, getpriority, (int, int))
DUMMY(int , -1, getrusage, (int, rusage *)) DUMMY(int , -1, getrusage, (int, rusage *))
DUMMY_SILENT(uid_t , 0, getuid, (void)) DUMMY_SILENT(uid_t , 0, getuid, (void))
commit c3d87d0a79f9e30aebdf26d3b684c6b1b2214c51
Author: Emery Hemingway <ehmry@posteo.net>
Date: Wed Jun 10 20:15:44 2020 +0530
libc: add newlocale and freelocale dummies
Fix #3777
diff --git a/repos/libports/src/lib/libc/nolocale.cc b/repos/libports/src/lib/libc/nolocale.cc
index 9d43c35acb..ec37b81336 100644
--- a/repos/libports/src/lib/libc/nolocale.cc
+++ b/repos/libports/src/lib/libc/nolocale.cc
@@ -64,4 +64,14 @@ char *setlocale(int, const char *)
return (char*)"C";
}
+
+locale_t newlocale(int, const char *locale, locale_t)
+{
+ Genode::warning("cannot set \"", locale, "\" locale, not implemented");
+ return NULL;
+}
+
+
+void freelocale(locale_t) { }
+
}

View File

@ -1,8 +1,7 @@
# The file is generated by the "genodeSources" derivation. # The file is generated by the "genodeSources" derivation.
{ {
acpica = "5c1c54"; acpica = "5c1c54";
ada-runtime = "db8987"; ada-runtime = "fabce1";
arora = "e8f003";
bash = "02edac"; bash = "02edac";
bbl = "b9358c"; bbl = "b9358c";
binutils = "62d309"; binutils = "62d309";
@ -14,7 +13,6 @@
dde_ipxe = "b68f4e"; dde_ipxe = "b68f4e";
dde_linux = "173719"; dde_linux = "173719";
dde_rump = "9afe56"; dde_rump = "9afe56";
dde_zircon = "49e3d9";
diffutils = "ee502a"; diffutils = "ee502a";
drm = "01858a"; drm = "01858a";
e2fsprogs = "2a09cd"; e2fsprogs = "2a09cd";
@ -31,23 +29,22 @@
gcc = "20345a"; gcc = "20345a";
gcov = "a6f852"; gcov = "a6f852";
gdb = "8eddf0"; gdb = "8eddf0";
getdns = "030233";
gmp = "855680"; gmp = "855680";
gnupg = "c784d4"; gnupg = "c784d4";
grep = "b96a88"; grep = "b96a88";
grub2 = "8cf62c"; grub2 = "856f99";
icu = "62f13b"; icu = "62f13b";
jbig2dec = "682269"; jbig2dec = "682269";
jitterentropy = "6017e1"; jitterentropy = "6017e1";
jpeg = "5effdd"; jpeg = "5effdd";
less = "e7a42c"; less = "e7a42c";
libarchive = "7ce310"; libarchive = "7ce310";
libc = "2e544d"; libc = "771dcc";
libdrm = "c1cce0"; libdrm = "c1cce0";
libgcrypt = "37159a"; libgcrypt = "37159a";
libiconv = "3f5ca3"; libiconv = "3f5ca3";
libpng = "ac05f3"; libpng = "ac05f3";
libsparkcrypto = "d479dc"; libsparkcrypto = "924de3";
libssh = "a475cc"; libssh = "a475cc";
libusb = "633358"; libusb = "633358";
libyaml = "1cde80"; libyaml = "1cde80";
@ -74,23 +71,22 @@
pistachio = "68c8c3"; pistachio = "68c8c3";
qemu-usb = "2ff18f"; qemu-usb = "2ff18f";
qoost = "014d68"; qoost = "014d68";
qt5 = "084385"; qt5 = "1b1c56";
qt5-host = "ad5edc"; qt5-host = "21e078";
readline = "a0bfb0"; readline = "a0bfb0";
sanitizer = "181889"; sanitizer = "3ac05b";
sed = "459979"; sed = "459979";
sel4 = "793548"; sel4 = "793548";
sel4_tools = "4ee1b9"; sel4_tools = "4ee1b9";
seoul = "e8d696"; seoul = "e8d696";
solo5 = "55dd4f";
stb = "ab8f50"; stb = "ab8f50";
stdcxx = "79ad88"; stdcxx = "722e94";
tar = "19aea4"; tar = "19aea4";
tcl = "842b1a"; tcl = "842b1a";
ttf-bitstream-vera = "cd3684"; ttf-bitstream-vera = "cd3684";
uboot = "f3fd6b"; uboot = "f3fd6b";
vim = "53caaa"; vim = "53caaa";
virtualbox5 = "e93407"; virtualbox5 = "e60d97";
which = "91c953"; which = "91c953";
x86emu = "8a1c3a"; x86emu = "8a1c3a";
xz = "45203f"; xz = "45203f";

View File

@ -4,7 +4,7 @@
{ buildPackages }: { buildPackages }:
with buildPackages; { with buildPackages; {
binutils = { binutils = {
hash = "sha256-gTYP9YNx+x6KVfIMjTD+UAReWwUg93TCkJIWwAau9eA="; hash = "sha256-Y6EwEb2uFNzJ/6Q+7Jia7LZu5iRt1XkzkogUxiC93t8=";
nativeBuildInputs = [ autoconf ]; nativeBuildInputs = [ autoconf ];
}; };
dde_bsd.hash = "sha256-Z2piyoOrNmXyEEp+kX5w/q4JTylYdSOocUrFeqjz13A="; dde_bsd.hash = "sha256-Z2piyoOrNmXyEEp+kX5w/q4JTylYdSOocUrFeqjz13A=";
@ -26,7 +26,7 @@ with buildPackages; {
jitterentropy.hash = "sha256-6KS732GxtUMz0xPYKtshdn039DgdJq11vTDQesZn4Ds="; jitterentropy.hash = "sha256-6KS732GxtUMz0xPYKtshdn039DgdJq11vTDQesZn4Ds=";
jpeg.hash = "sha256-RLVnlrnYGrhqr3Feikoi/BNditCaKN0u3t9/UDpl2wQ="; jpeg.hash = "sha256-RLVnlrnYGrhqr3Feikoi/BNditCaKN0u3t9/UDpl2wQ=";
libc = { libc = {
hash = "sha256-ONmUhqY7rVtH6Z+K7VCY0OMLNi1SF1XCHFjiVY3MW3c="; hash = "sha256-bD0Kqho7ABMHxFYOAkQlvJgzSIsomy5OTtpKE+JAVUY=";
nativeBuildInputs = [ buildPackages.gcc ]; nativeBuildInputs = [ buildPackages.gcc ];
}; };
libiconv.hash = "sha256-25YcW5zo1fE33ZolGQroR+KZO8wHEdN1QXa7+MhwS78="; libiconv.hash = "sha256-25YcW5zo1fE33ZolGQroR+KZO8wHEdN1QXa7+MhwS78=";
@ -44,9 +44,9 @@ with buildPackages; {
openssl.hash = "sha256-epRL3SobYQ7xf8qwp6D5xu/Ms2T/LhUjjs273ywWRWg="; openssl.hash = "sha256-epRL3SobYQ7xf8qwp6D5xu/Ms2T/LhUjjs273ywWRWg=";
qemu-usb.hash = "sha256-F4ZXeH5sx3FOcD42zFOxKFMsqGookKdav1NJ7YgVw98="; qemu-usb.hash = "sha256-F4ZXeH5sx3FOcD42zFOxKFMsqGookKdav1NJ7YgVw98=";
stb.hash = "sha256-9LSH1i8jcEvjRAmTvgtK+Axy9hO7uiSzmSgBvs0zkTc="; stb.hash = "sha256-9LSH1i8jcEvjRAmTvgtK+Axy9hO7uiSzmSgBvs0zkTc=";
stdcxx.hash = "sha256-iiE009fL1yE3XJ7HkaJakOiS++m7qONwwGrdJjBXQ7k="; stdcxx.hash = "sha256-4Gn/TyA/q83kyO8f5Wr+gv8fNYR5YPDNZIk7+Ty5fn4=";
virtualbox5 = { virtualbox5 = {
hash = "sha256-HLga/0pHQkjdMH7mU194B7pTFJoOoww69Yii4Ixmkxo="; hash = "sha256-ERI+j2thvyMj+TJSHDdA9sOQdIxrXfNfMNJIa8VRE0M=";
nativeBuildInputs = [ iasl libxslt unzip yasm ]; nativeBuildInputs = [ iasl libxslt unzip yasm ];
}; };
x86emu.hash = "sha256-QY6OL+cDVjQ67JItP1rS4ufPRGZf43AZtWxwza/0q0w="; x86emu.hash = "sha256-QY6OL+cDVjQ67JItP1rS4ufPRGZf43AZtWxwza/0q0w=";

View File

@ -11,13 +11,10 @@ let
vbox5' = { vbox5' = {
nativeBuildInputs = with buildPackages; [ iasl yasm ]; nativeBuildInputs = with buildPackages; [ iasl yasm ];
patches = [ ./vbox-framebuffer-fail-on-fail.patch ];
portInputs = [ libc libiconv qemu-usb stdcxx virtualbox5 ]; portInputs = [ libc libiconv qemu-usb stdcxx virtualbox5 ];
}; };
in { in {
cached_fs_rom.patches = [ ./cached_fs_rom.patch ];
fb_sdl = with buildPackages; { fb_sdl = with buildPackages; {
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ SDL ]; buildInputs = [ SDL ];
@ -28,7 +25,7 @@ in {
init.patches = [ ./sandbox.patch ]; init.patches = [ ./sandbox.patch ];
input_filter.patches = [ ./input_filter.patch ]; event_filter.patches = [ ./event_filter.patch ];
intel_fb_drv = { intel_fb_drv = {
BOARD = "pc"; BOARD = "pc";

View File

@ -1,126 +0,0 @@
commit d2a28a33f6a2bda7000ce201d52ff99714895640
Author: Emery Hemingway <ehmry@posteo.net>
Date: Fri May 15 11:28:10 2020 +0530
vbox: use Nitpicker mode for initial resolution
diff --git a/repos/ports/src/virtualbox5/frontend/fb.h b/repos/ports/src/virtualbox5/frontend/fb.h
index 95a7db8602..bf2d65d7c1 100644
--- a/repos/ports/src/virtualbox5/frontend/fb.h
+++ b/repos/ports/src/virtualbox5/frontend/fb.h
@@ -40,7 +40,7 @@ class Genodefb :
Nitpicker::Connection &_nitpicker;
Fb_Genode::Session &_fb { *_nitpicker.framebuffer() };
View_handle _view;
- Fb_Genode::Mode _fb_mode { 1024, 768, Fb_Genode::Mode::RGB565 };
+ Fb_Genode::Mode _fb_mode { _nitpicker.mode() };
/*
* The mode currently used by the VM. Can be smaller than the
commit b6bf91067a4c1c6d5b3508aedd949c8e1a7fe4b3
Author: Emery Hemingway <ehmry@posteo.net>
Date: Fri May 15 11:20:47 2020 +0530
vbox: fail on invalid framebuffer dataspace
VirtualBox can hang during initialization if Nitpicker returns an
invalid dataspace due to insufficient server-side resources. Make
an invalid dataspace a critical rather than silent error.
diff --git a/repos/ports/src/virtualbox5/frontend/fb.h b/repos/ports/src/virtualbox5/frontend/fb.h
index dce00fe4eb..95a7db8602 100644
--- a/repos/ports/src/virtualbox5/frontend/fb.h
+++ b/repos/ports/src/virtualbox5/frontend/fb.h
@@ -21,6 +21,9 @@
#include <os/texture_rgb888.h>
#include <os/dither_painter.h>
+#include <base/attached_dataspace.h>
+#include <util/reconstructible.h>
+
/* VirtualBox includes */
#include "Global.h"
@@ -35,7 +38,7 @@ class Genodefb :
Genode::Env &_env;
Nitpicker::Connection &_nitpicker;
- Fb_Genode::Session &_fb;
+ Fb_Genode::Session &_fb { *_nitpicker.framebuffer() };
View_handle _view;
Fb_Genode::Mode _fb_mode { 1024, 768, Fb_Genode::Mode::RGB565 };
@@ -43,18 +46,18 @@ class Genodefb :
* The mode currently used by the VM. Can be smaller than the
* framebuffer mode.
*/
- Fb_Genode::Mode _virtual_fb_mode;
+ Fb_Genode::Mode _virtual_fb_mode { _initial_setup() };
+
+ Genode::Reconstructible<Genode::Attached_dataspace>
+ _fb_dataspace { _env.rm(), _fb.dataspace() };
- void *_fb_base;
RTCRITSECT _fb_lock;
void _clear_screen()
{
- if (!_fb_base) return;
-
size_t const max_h = Genode::min(_fb_mode.height(), _virtual_fb_mode.height());
size_t const num_pixels = _fb_mode.width() * max_h;
- memset(_fb_base, 0, num_pixels * _fb_mode.bytes_per_pixel());
+ memset(_fb_dataspace->local_addr<char>(), 0, num_pixels * _fb_mode.bytes_per_pixel());
_fb.refresh(0, 0, _virtual_fb_mode.width(), _virtual_fb_mode.height());
}
@@ -91,10 +94,7 @@ class Genodefb :
Genodefb (Genode::Env &env, Nitpicker::Connection &nitpicker)
:
_env(env),
- _nitpicker(nitpicker),
- _fb(*nitpicker.framebuffer()),
- _virtual_fb_mode(_initial_setup()),
- _fb_base(env.rm().attach(_fb.dataspace()))
+ _nitpicker(nitpicker)
{
int rc = RTCritSectInit(&_fb_lock);
Assert(rc == VINF_SUCCESS);
@@ -109,16 +109,11 @@ class Genodefb :
_fb_mode = mode;
- if (_fb_base)
- _env.rm().detach(_fb_base);
+ _fb_dataspace.destruct();
_adjust_buffer();
- try {
- _fb_base = _env.rm().attach(_fb.dataspace());
- } catch (...) {
- _fb_base = nullptr;
- }
+ _fb_dataspace.construct(_env.rm(), _fb.dataspace());
Unlock();
}
@@ -201,8 +196,6 @@ class Genodefb :
PRUint32 imageSize,
PRUint8 *image) override
{
- if (!_fb_base) return S_OK;
-
Lock();
Nitpicker::Area const area_fb = Nitpicker::Area(_fb_mode.width(),
@@ -215,7 +208,7 @@ class Genodefb :
typedef Pixel_rgb565 Pixel_dst;
Texture<Pixel_src> texture((Pixel_src *)image, nullptr, area_vm);
- Surface<Pixel_dst> surface((Pixel_dst *)_fb_base, area_fb);
+ Surface<Pixel_dst> surface(_fb_dataspace->local_addr<Pixel_dst>(), area_fb);
Dither_painter::paint(surface, texture, Surface_base::Point(o_x, o_y));

View File

@ -1,153 +0,0 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let drivers = env:drivers ? ../compositions/pc-drivers.dhall
let Genode = Test.Genode
let Init = Genode.Init
let Child = Init.Child
let Resources = Init.Resources
let ServiceRoute = Init.ServiceRoute
let parentRomRoute =
λ(from : Text)
→ λ(to : Text)
→ ServiceRoute.parentLabel "ROM" (Some from) (Some to)
let childRomRoute =
λ(child : Text)
→ λ(from : Text)
→ ServiceRoute.childLabel "ROM" child (Some from) (None Text)
let label = λ(_ : Text) → { local = _, route = _ }
let init =
Init::{
, verbose = True
, routes = [ ServiceRoute.parent "Timer" ]
, children = toMap
{ drivers =
Init.toChild
drivers
Init.Attributes::{
, provides = [ "Block", "Framebuffer", "Input" ]
, resources = Init.Resources::{ ram = Genode.units.MiB 4 }
, romReports = [ label "block_devices" ]
, routes =
[ parentRomRoute "managed/input_filter" "input_filter.config"
, parentRomRoute " numlock_remap" "numlock_remap.config"
, childRomRoute "dynamic_rom" "capslock"
, childRomRoute "dynamic_rom" "numlock"
, childRomRoute "dynamic_rom" "system"
, ServiceRoute.child "Report" "_report_rom"
, ServiceRoute.parent "IRQ"
, ServiceRoute.parent "IO_MEM"
, ServiceRoute.parent "IO_PORT"
, ServiceRoute.parent "Timer"
]
}
, dynamic_rom =
Child.flat
Child.Attributes::{
, binary = "dynamic_rom"
, resources = Resources::{ ram = Genode.units.MiB 4 }
, provides = [ "ROM" ]
, config = Genode.Init.Config::{
, content =
[ Genode.Prelude.XML.text
''
<rom name="system">
<inline>
<system state=""/>
</inline>
<sleep milliseconds="10000"/>
</rom>
''
]
}
}
, test-driver_manager =
Child.flat
Child.Attributes::{
, binary = "test-driver_manager"
, config = Init.Config::{
, content =
[ Genode.Prelude.XML.text
''
<check_ahci_block_device label="ahci-1" block_count="65536" block_size="512" model="QEMU HARDDISK"/>
<check_input/>
<check_framebuffer/>
''
]
}
, reportRoms = [ label "block_devices" ]
, routes =
[ ServiceRoute.child "Block" "drivers"
, ServiceRoute.child "Framebuffer" "drivers"
, ServiceRoute.child "Input" "drivers"
]
}
}
}
let rom =
Genode.Boot.toRomTexts
( toMap
{ capslock = "<feature_creep/>"
, numlock = "<feature_creep/>"
, usb_policy = "<usb/>"
}
# [ { mapKey = "fb_drv.config"
, mapValue =
''
<config width="1024" height="768" buffered="yes"/>
<report connectors="yes"/>
</config>
''
}
, { mapKey = "input_filter.config"
, mapValue =
''
<config>
<input label="ps2"/>
<input label="usb"/>
<output>
<chargen>
<remap>
<key name="KEY_F11" to="KEY_RESTART"/>
<key name="KEY_F12" to="KEY_DASHBOARD"/>
<key name="KEY_LEFTMETA" to="KEY_SCREEN"/>
<merge>
<accelerate max="50" sensitivity_percent="1000" curve="127">
<button-scroll>
<input name="ps2"/>
<vertical button="BTN_MIDDLE" speed_percent="-10"/>
<horizontal button="BTN_MIDDLE" speed_percent="-10"/>
</button-scroll>
</accelerate>
<input name="usb"/>
</merge>
</remap>
<mod1>
<key name="KEY_LEFTSHIFT"/> <key name="KEY_RIGHTSHIFT"/>
</mod1>
<mod2>
<key name="KEY_LEFTCTRL"/> <key name="KEY_RIGHTCTRL"/>
</mod2>
<mod3>
<key name="KEY_RIGHTALT"/> <!-- AltGr -->
</mod3>
<repeat delay_ms="230" rate_ms="40"/>
</chargen>
</output>
</config>
''
}
]
)
in Test::{ children = Test.initToChildren init, rom = rom }

View File

@ -1,4 +1,3 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode let Genode = Test.Genode

View File

@ -1,4 +1,3 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode let Genode = Test.Genode
@ -11,8 +10,8 @@ let Init = Genode.Init
let Child = Init.Child let Child = Init.Child
in λ(params : { bash : Text, coreutils : Text, script : Text }) in λ(params : { bash : Text, coreutils : Text, script : Text })
let init = let init =
Init::{ Init::{
, verbose = True , verbose = True
, routes = , routes =
@ -83,8 +82,8 @@ in λ(params : { bash : Text, coreutils : Text, script : Text })
# Prelude.List.map # Prelude.List.map
Text Text
XML.Type XML.Type
( λ(x : Text) ( λ(x : Text)
XML.leaf XML.leaf
{ name = "arg" { name = "arg"
, attributes = toMap { value = x } , attributes = toMap { value = x }
} }
@ -99,13 +98,13 @@ in λ(params : { bash : Text, coreutils : Text, script : Text })
, routes = , routes =
[ Init.ServiceRoute.child "File_system" "vfs" [ Init.ServiceRoute.child "File_system" "vfs"
, { service = , { service =
{ name = "ROM" { name = "ROM"
, label = , label =
Init.LabelSelector.Type.Partial Init.LabelSelector.Type.Partial
{ prefix = Some "/nix/store/" { prefix = Some "/nix/store/"
, suffix = None Text , suffix = None Text
} }
} }
, route = , route =
Init.Route.Type.Child Init.Route.Type.Child
{ name = "store_rom" { name = "store_rom"

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Init = Genode.Init let Init = Genode.Init
@ -25,11 +24,25 @@ let init =
, block = , block =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "ram_block" , binary = "vfs_block"
, provides = [ "Block" ] , provides = [ "Block" ]
, resources = Init.Resources::{ ram = Genode.units.MiB 9 } , resources = Init.Resources::{ ram = Genode.units.MiB 12 }
, config = Init.Config::{ , config = Init.Config::{
, attributes = toMap { size = "8M", block_size = "4096" } , content =
[ Genode.Prelude.XML.text
''
<vfs>
<ram/>
<import>
<zero name="block.raw" size="8M"/>
</import>
</vfs>
''
]
, defaultPolicy = Some Init.Config.DefaultPolicy::{
, attributes = toMap
{ file = "block.raw", writeable = "yes" }
}
} }
} }
} }

View File

@ -21,10 +21,11 @@ in map solo5Test [
if pkgs.stdenv.hostPlatform.isAarch64 then "True" else "False" if pkgs.stdenv.hostPlatform.isAarch64 then "True" else "False"
} }"; } }";
inputs = map genodeMake [ "app/ping" ] ++ (map genodeDepot [ inputs = map genodeMake [ "app/ping" ] ++ (map genodeDepot [
"ram_block"
"nic_bridge" "nic_bridge"
"nic_loopback" "nic_loopback"
"sequence" "sequence"
"vfs_block"
"vfs_import"
]); ]);
}; };
} }

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Init = Genode.Init let Init = Genode.Init

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Init = Genode.Init let Init = Genode.Init

View File

@ -1,4 +1,3 @@
let Test = ../test.dhall ? env:DHALL_GENODE_TEST let Test = ../test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode let Genode = Test.Genode
@ -12,8 +11,8 @@ let Child = Init.Child
let Config = Init.Config let Config = Init.Config
let toSimple = let toSimple =
λ(testName : Text) λ(testName : Text)
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "solo5-test_${testName}" , binary = "solo5-test_${testName}"
, resources = Init.Resources::{ caps = 256, ram = Genode.units.MiB 3 } , resources = Init.Resources::{ caps = 256, ram = Genode.units.MiB 3 }
@ -28,8 +27,8 @@ let toSimple =
} }
} }
in λ(params : { isAarch64 : Bool }) in λ(params : { isAarch64 : Bool })
let tests let tests
: Prelude.Map.Type Text Child.Type : Prelude.Map.Type Text Child.Type
= toMap = toMap
{ quiet = toSimple "quiet" { quiet = toSimple "quiet"
@ -40,10 +39,8 @@ in λ(params : { isAarch64 : Bool })
, net = ./net.dhall , net = ./net.dhall
, net_2if = ./net_2if.dhall , net_2if = ./net_2if.dhall
} }
# ( if params.isAarch64 # ( if params.isAarch64
then Prelude.Map.empty Text Child.Type then Prelude.Map.empty Text Child.Type
else toMap { fpu = toSimple "fpu" } else toMap { fpu = toSimple "fpu" }
) )

View File

@ -1,4 +1,3 @@
let Test = ../test.dhall ? env:DHALL_GENODE_TEST let Test = ../test.dhall ? env:DHALL_GENODE_TEST
let Child = Test.Genode.Init.Child let Child = Test.Genode.Init.Child

View File

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Init = Genode.Init let Init = Genode.Init

View File

@ -1,4 +1,3 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode let Genode = Test.Genode
@ -18,15 +17,15 @@ let Children = TextMapType Child.Type
let Manifest/Type = TextMapType (TextMapType Text) let Manifest/Type = TextMapType (TextMapType Text)
let Manifest/toRoutes = let Manifest/toRoutes =
λ(manifest : Manifest/Type) λ(manifest : Manifest/Type)
Prelude.List.map Prelude.List.map
(Prelude.Map.Entry Text Text) (Prelude.Map.Entry Text Text)
Init.ServiceRoute.Type Init.ServiceRoute.Type
( λ(entry : Prelude.Map.Entry Text Text) ( λ(entry : Prelude.Map.Entry Text Text)
{ service = { service =
{ name = "ROM" { name = "ROM"
, label = Init.LabelSelector.Type.Last entry.mapKey , label = Init.LabelSelector.Type.Last entry.mapKey
} }
, route = , route =
Init.Route.Type.Child Init.Route.Type.Child
{ name = "store_rom" { name = "store_rom"
@ -44,9 +43,9 @@ let parentROMs =
Prelude.List.map Prelude.List.map
Text Text
Init.ServiceRoute.Type Init.ServiceRoute.Type
( λ(label : Text) ( λ(label : Text)
{ service = { service =
{ name = "ROM", label = Init.LabelSelector.Type.Last label } { name = "ROM", label = Init.LabelSelector.Type.Last label }
, route = , route =
Init.Route.Type.Parent { label = Some label, diag = None Bool } Init.Route.Type.Parent { label = Some label, diag = None Bool }
} }
@ -54,9 +53,9 @@ let parentROMs =
let wrapHarness let wrapHarness
: Children → Manifest/Type → Child.Type : Children → Manifest/Type → Child.Type
= λ(children : Children) = λ(children : Children)
λ(manifest : Manifest/Type) λ(manifest : Manifest/Type)
Child.nested Child.nested
children children
Child.Attributes::{ Child.Attributes::{
, binary = "sotest-harness" , binary = "sotest-harness"
@ -88,11 +87,11 @@ let wrapHarness
# Manifest/toRoutes manifest # Manifest/toRoutes manifest
} }
in λ(test : Test.Type) in λ(test : Test.Type)
λ(storeSize : Natural) λ(storeSize : Natural)
λ(storeManifest : Manifest/Type) λ(storeManifest : Manifest/Type)
λ(bootManifest : Manifest/Type) λ(bootManifest : Manifest/Type)
Genode.Boot::{ Genode.Boot::{
, config = Init::{ , config = Init::{
, children = , children =
[ { mapKey = "timer" [ { mapKey = "timer"

View File

@ -1,19 +1,18 @@
let Genode = env:DHALL_GENODE let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude let Prelude = Genode.Prelude
let Init = Genode.Init let Init = Genode.Init
in { Genode = Genode in { Genode
, Type = , Type =
{ children : Prelude.Map.Type Text Init.Child.Type { children : Prelude.Map.Type Text Init.Child.Type
, rom : Genode.BootModules.Type , rom : Genode.BootModules.Type
} }
, default.rom = [] : Genode.BootModules.Type , default.rom = [] : Genode.BootModules.Type
, initToChildren = , initToChildren =
λ(init : Init.Type) λ(init : Init.Type)
toMap toMap
{ init = { init =
Init.toChild Init.toChild
init init

View File

@ -1,4 +1,3 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode let Genode = Test.Genode
@ -11,8 +10,8 @@ let ServiceRoute = Init.ServiceRoute
let Child = Init.Child let Child = Init.Child
in λ(guest : { linux : Text, dtb : Text, initrd : Text }) in λ(guest : { linux : Text, dtb : Text, initrd : Text })
let init = let init =
Init::{ Init::{
, children = toMap , children = toMap
{ nic = { nic =
@ -38,7 +37,7 @@ in λ(guest : { linux : Text, dtb : Text, initrd : Text })
] ]
} }
] ]
, defaultPolicy = Some Init.Config.Policy::{ , defaultPolicy = Some Init.Config.DefaultPolicy::{
, attributes = toMap { domain = "default" } , attributes = toMap { domain = "default" }
} }
} }

View File

@ -1,4 +1,3 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode let Genode = Test.Genode
@ -18,4 +17,4 @@ let vmm =
, routes = [ Genode.Init.ServiceRoute.parent "VM" ] , routes = [ Genode.Init.ServiceRoute.parent "VM" ]
} }
in Test::{ children = toMap { vmm = vmm } } in Test::{ children = toMap { vmm } }

View File

@ -1,4 +1,3 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode let Genode = Test.Genode
@ -83,7 +82,7 @@ let pciInit =
, attributes = toMap { class = "ALL" } , attributes = toMap { class = "ALL" }
} }
] ]
, label = Init.LabelSelector.Type.Scoped "test-pci" , label = Init.LabelSelector.prefix "test-pci"
} }
] ]
} }