bootmem allocator

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
 
I was going through the Memory Initialization document at   www.linux-mm.org/ 

I am trying to understand the bootmem allocator.Nothing much is written about those functions
except for a few lines.

I believe the virtual memory above PAGE_OFFSET is reserved for kernel.

Here is my analysis of the setup_arch() from kernel/setup.c.Please correct me if I am wrong.
1.    /*
        * Partially used pages are not usable - thus
        * we are rounding upwards.
        */
        start_pfn = PFN_UP(__pa(&_end));

This is the page frame number in the physical memory above which the bootmem would be allocated.
2. The next part of the code is a for loop that calculates the highest page frame number which would 
be nothing but the end of physical memory.
3. Then there is a call to init_bootmem.
4. In the init_bootmem routine, I would like to know what is the "mapsize" for.What does it indicate?
5. In the same routine, a bootmem structure is filled with values for the virtual address of start_pfn, 
the start address and an entry for the highest page frame number.Then the memory starting at 
bootmem_map is initialized.
6.Returning to setup_arch(),.there is a for loop that does not do a lot.
7.Then there is a call to reserve_bootmem() with the physical address of the first usable page frame
as one of its arguments.
8. In the reserve_bootmem routine, what do sidx,eidx and end point to? I am not sure if sidx and eidx 
point to the physical page numbers needed for bootmem.

I could be wrong at a few places.

Thanks,
Manoj


--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
IRC Channel:   irc.openprojects.net / #kernelnewbies
Web Page:      http://www.kernelnewbies.org/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux