Thank you again for your help on this!
Also did a couple of tests with 600D on qemu. I can load almost every other modules with EDMAC and Lua without any issue!
32 bit ELF files would mean max size = 4Go, without taking the constraint of the OS that surely will not let us manage such size in memory I think.
Concerning memory allocation and based on the topics related to memory pools, as you pointed out, there's some abstractions for ML code which will set the right memory pool depending on its availability and usage for ML. So I guess when ML is being loaded into memory (and depending of previously activated modules) ML might use malloc to get initialized or even AllocateMemory (MemoryManager) pool if the size exceeds malloc limits? Or is it directly mapped into the AllocateMemory pool and depending on modules usages other pools (such as shoot_malloc) might be used to provide more memory?
It might be more subtle than that, but I'm just trying to get some insights to understand how things work on that part.
Quote
I quickly tested loading both EDMAC and Lua modules on 600D in qemu and this worked.
Also did a couple of tests with 600D on qemu. I can load almost every other modules with EDMAC and Lua without any issue!
Quote
I don't know of any special limit on the size of an individual module. They go through a build process that will limit them to sizes for 32-bit ELF files, but these are much too large to be relevant.
32 bit ELF files would mean max size = 4Go, without taking the constraint of the OS that surely will not let us manage such size in memory I think.
Concerning memory allocation and based on the topics related to memory pools, as you pointed out, there's some abstractions for ML code which will set the right memory pool depending on its availability and usage for ML. So I guess when ML is being loaded into memory (and depending of previously activated modules) ML might use malloc to get initialized or even AllocateMemory (MemoryManager) pool if the size exceeds malloc limits? Or is it directly mapped into the AllocateMemory pool and depending on modules usages other pools (such as shoot_malloc) might be used to provide more memory?
It might be more subtle than that, but I'm just trying to get some insights to understand how things work on that part.