IO configuration language
Adam Lackorzynski
adam at os.inf.tu-dresden.de
Sun Jun 22 23:25:25 CEST 2014
On Thu Jun 19, 2014 at 15:03:05 +0200, Martin Schröder wrote:
> IO supports two configuration formats. The (legacy format ?) "IO
> configuration language" and a (newer ?) lua based one.
>
> Except for some examples and the syntax file ioconfig.vim I could not find
> much documentation. But anyway I am running into trouble when using the lua
> based one instead of my existing (so far working) old one.
>
>
> I have something like this (two network cards with each dmamem):
> === (old one)
> hw-root {
> NIC0 => new Device() {
> .hid = "foodevice";
> new-res Mmio(0x111 ... 0x222);
> }
> NIC1 => new Device() {
> .hid = "foodevice";
> new-res Mmio(0x333 ... 0x444);
> }
> DMAMEM0 => new Device() {
> .hid = "dmamem";
> new-res Mmio_ram(0x80000, 0);
> }
> DMAMEM1 => new Device() {
> .hid = "dmamem";
> new-res Mmio_ram(0x80000, 0);
> }
> }
> client0 => new System_bus() {
> "foo.dev0" => wrap(hw-root.NIC0);
> "dmamem" => wrap(hw-root.DMAMEM0);
> }
> client1 => new System_bus() {
> "foo.dev1" => wrap(hw-root.NIC1);
> "dmamem" => wrap(hw-root.DMAMEM1);
> }
> ===
>
> and want to convert it into something like this:
>
> === (new one)
> Io.hw_add_devices {
> NIC0 = Io.Hw.Device {
> hid = "foodevice"
> Io.Res.mmio(0x111, 0x222)
> },
> NIC1 = Io.Hw.Device {
> hid = "foodevice"
> Io.Res.mmio(0x333, 0x444)
> },
> DMAMEM0 = Io.Hw.Device {
> hid = "dmamem";
> Io.Mmio_data_space(0x80000, 0x80000);
> },
> DMAMEM1 = Io.Hw.Device {
> hid = "dmamem";
> Io.Mmio_data_space(0x80000, 0x80000);
> }
> }
> local hw = Io.Hw
> Io.add_vbusses
> {
> client0 = Io.Vi.System_bus(function ()
> dev0 = wrap(hw:match(NIC0));
> dev1 = wrap(hw:match(DMAMEM0));
> end),
> client1 = Io.Vi.System_bus(function ()
> dev0 = wrap(hw:match(NIC1));
> dev1 = wrap(hw:match(DMAMEM1));
> end)
> }
> ===
>
> So dev0 = wrap(hw:match(NIC0)); seems to be wrong. In all the examples I
> fould the hid-string dev0 = wrap(hw:match("foodevice")) is always used.
>
>
> So three questions:
>
> 1) How can I use the device in the example if the hid is not unique? I even
> tried wrap(hw:device(NIC0)) but this does not work eiher.
wrap(hw.NIC0) should do it.
> 2) How can I set the device name for client0/client1 into "foo.dev0" for
> dev0 as in the (old) example above? dev0.set_name("foo.dev0"); seems not to
> be the right one.
I don't think this is easily possible with the new syntax. Do you need
that type of name?
> 3) Is Io.mio_data_space(0x80000, 0x80000) the right replacement for "new-res
> Mmio_ram(0x80000, 0);" ?
Just Io.Mmio_data_space(0x80000) is enough.
Adam
--
Adam adam at os.inf.tu-dresden.de
Lackorzynski http://os.inf.tu-dresden.de/~adam/
More information about the l4-hackers
mailing list