question about Region_map::Region_conflict in attach_at()
Alexander Tormasov
a.tormasov at innopolis.ru
Sun Nov 15 01:11:00 CET 2020
Hi!
I have a problem in the following code (64 bit NOVA 20.08, 3GB RAM, with gdb):
void Component::construct(Env &env)
{
Rm_connection rm(env);
Region_map_client my_rm(rm.create(0x1400000));
char *_base = env.rm().attach(my_rm.dataspace());
Region_map_client my1_rm(rm.create(0x1000));
env.rm().attach_at(my1_rm.dataspace(), 0x102e000);
log("my create managed dataspace", Hex((addr_t)_base));
}
it return _base [11000000,12400000)
and it give error during attach_at() call (which is far from requested address 0x102e000)
Error: Uncaught exception of type 'Genode::Region_map::Region_conflict’
Why it is happens?
Where this error generated in the NOVA code (or genode NOVA wrapper)?
I assume that I can create 2 RM clients to be able to fill it (attach_to) ds later?
Thanks!
Sincerely,
Alexander
run file
#debug go application via gdb
#
set build_components {
core init timer lib/ld
drivers/uart app/gdb_monitor
lib/vfs/pipe
noux-pkg/mmaptest
}
lappend build_components "lib/gdbserver_platform-$::env(KERNEL)"
build $build_components
create_boot_directory
proc local_heap_default_size {} { return "0x1400000" }
install_config {
<config verbose="yes" ld_verbose="yes">
<parent-provides>
<service name="ROM" />
<service name="LOG" />
<service name="RM" />
<service name="CPU" />
<service name="PD" />
<service name="IRQ" />
<service name="IO_MEM" />
<service name="IO_PORT" />
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<default caps="200" />
<start name="timer">
<resource name="RAM" quantum="2M»/>
<provides> <service name="Timer"/> </provides>
</start>
<start name="pc_uart_drv">
<resource name="RAM" quantum="2M" />
<provides>
<service name="Uart"/>
<service name="Terminal"/>
</provides>
<config>
<policy label_prefix="gdb_monitor" uart="1" />
</config>
</start>
<start name="gdb_monitor" caps="4800">
<resource name="RAM" quantum="80M" />
<provides> <service name="mmaptest" /> </provides>
<config verbose="yes" ld_verbose="yes">
<target name="mmaptest" caps="2800">
<config verbose="yes" ld_verbose="yes"
local_heap_default_size="} [local_heap_default_size] {">
<vfs> <dir name="dev"> <log /> </dir> </vfs>
<libc stdout="/dev/log" stderr="/dev/log" />
</config>
</target>
<preserve name="RAM" quantum="50M" />
<vfs>
<dir name="dev"> <log/> <terminal/> </dir>
<dir name="pipe"> <pipe/> </dir>
</vfs>
<libc stdout="/dev/log" stderr="/dev/log" pipe="/pipe"/>
</config>
</start>
</config>
}
# evaluated by the run tool
proc binary_name_gdbserver_platform_lib_so { } {
return "gdbserver_platform-$::env(KERNEL).lib.so"
}
build_boot_image {
core init timer
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so
pc_uart_drv posix.lib.so stdcxx.lib.so vfs_pipe.lib.so
posix.lib.so stdcxx.lib.so vfs_pipe.lib.so
gdb_monitor gdbserver_platform.lib.so
vfs.lib.so mmaptest
}
More information about the users
mailing list