Hi all,
I've got a question about Fiasco source.
As in *Mem_region Kip::last_free() const*, the function try to find the highest *Conventional* memory region's physical address. (I guess it gets physical memory bottom in the first time?). However in *void Kip_init::init(),* I only see one Conventional memory region which stores virtual address. Where does last_free() get the physical address??
And in bootstrap, I see it manipulate KIP. I thought at that time, KIP is not initialize, because bootstrap runs before Fiasco Startup, where Kip_init::init() is called.
Thanks & Best Regards, Zhang Yinfei
Hi,
On Sun Jul 06, 2008 at 21:49:03 +0800, Zhang Yinfei wrote:
As in *Mem_region Kip::last_free() const*, the function try to find the highest *Conventional* memory region's physical address. (I guess it gets physical memory bottom in the first time?). However in *void Kip_init::init(),* I only see one Conventional memory region which stores virtual address. Where does last_free() get the physical address??
And in bootstrap, I see it manipulate KIP. I thought at that time, KIP is not initialize, because bootstrap runs before Fiasco Startup, where Kip_init::init() is called.
The KIP data structure is indeed in the kernel binary but it is filled with memory descriptors by bootstrap. I.e. look for find_kip in bootstrap which looks for the KIP in the kernel. Kip_init::init() does setup a few things in the KIP but it does not start from scratch with the memory descriptors.
Adam
l4-hackers@os.inf.tu-dresden.de