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:
- 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.
- 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?
- 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