Hi Daniel,
On 10.07.2013 16:48, Daniel Waddington wrote:
Hi Alex, I see, so there is some 2^N round up. Why is this, I thought it used an AVL tree to manage memory?
From my understanding it's a mapping optimization for some kernels. Something like: mapping 64M to another task can be done with one
syscall if the address has 64M alignment. But I'm not familiar with the details, perhaps somebody else can help out here?
Also, can you run the test with..
#define NUM_REGIONS 15 #define TOTAL_MEMORY_TO_USE GB(2) #define REGION_SIZE MB(96)
I then get unhandled page faults. Can you see why?
Thanks Daniel
When only changing these values, the RAM dataspace is too small (phys_slab_size = GB(1)) for 15 regions of 96M. Usually, it would be an error if 'Ram_session::attach()' gets called with an 'offset' which exceeds the size of the dataspace (which happens in this case), but if I remember correctly there was a use case where this was valid. Something with ELF images and the dynamic linker. @ssumpf, do you remember? We should probably document this in 'Rm_session_component::attach()', why no exception gets thrown if 'size' is given and (offset >= dsc()->size()).
Christian