git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update project structures
[lunaix-os.git]
/
lunaix-os
/
kernel
/
mm
/
pmm.c
diff --git
a/lunaix-os/kernel/mm/pmm.c
b/lunaix-os/kernel/mm/pmm.c
index c6b0a25b7dd77cf39fa8f7fd8aa113b52c45a0c8..304d19dc47192f49606d546a777916bf90207034 100644
(file)
--- a/
lunaix-os/kernel/mm/pmm.c
+++ b/
lunaix-os/kernel/mm/pmm.c
@@
-17,6
+17,8
@@
uint8_t pm_bitmap[PM_BMP_MAX_SIZE];
uintptr_t max_pg;
uintptr_t max_pg;
+// ... |xxxx xxxx |
+// ... |-->|
void
pmm_mark_page_free(uintptr_t ppn)
{
void
pmm_mark_page_free(uintptr_t ppn)
{
@@
-77,7
+79,7
@@
size_t pg_lookup_ptr;
void
pmm_init(uintptr_t mem_upper_lim)
{
void
pmm_init(uintptr_t mem_upper_lim)
{
- max_pg = (PG_ALIGN(mem_upper_lim) >> 12)
+ 1
;
+ max_pg = (PG_ALIGN(mem_upper_lim) >> 12);
pg_lookup_ptr = LOOKUP_START;
pg_lookup_ptr = LOOKUP_START;
@@
-91,7
+93,7
@@
void*
pmm_alloc_page()
{
// Next fit approach. Maximize the throughput!
pmm_alloc_page()
{
// Next fit approach. Maximize the throughput!
- uintptr_t good_page_found = NULL;
+ uintptr_t good_page_found =
(uintptr_t)
NULL;
size_t old_pg_ptr = pg_lookup_ptr;
size_t upper_lim = max_pg;
uint8_t chunk = 0;
size_t old_pg_ptr = pg_lookup_ptr;
size_t upper_lim = max_pg;
uint8_t chunk = 0;