Anonymous user
James Molloy's Tutorial Known Bugs: Difference between revisions
Jump to navigation
Jump to search
Mention that the check for page alignment in kmalloc is wrong.
[unchecked revision] | [unchecked revision] |
(→Problem: __cdecl calling convention: Grammar) |
(Mention that the check for page alignment in kmalloc is wrong.) |
||
Line 74:
The <tt>kmalloc</tt> function in 6.4.1 only 1-byte aligns or page-aligns its memory address. This means you can only reliably use it allocate memories for chars (size 1), but not any larger types unless you use page-alignment. A proper malloc implementation returns pointers that are aligned such that they are suitable for all the common types, for instance it could be 64-bit (8-byte) aligned. You'll also want to modify the parameters such that it uses <tt>size_t</tt> appropriately rather than <tt>u32int</tt>.
Additionally the check if the address is page aligned is wrong.
<nowiki>
if (align == 1 && (placement_address & 0xFFFFF000)) // If the address is not already page-aligned</nowiki>
should be
<nowiki>
if (align == 1 && (placement_address & 0x00000FFF)) // If the address is not already page-aligned</nowiki>
== Problem: Paging Code ==
|