# HG changeset patch # User tobaru # Date 1580030440 -32400 # Node ID f9169495d476c59e86cfa6ea004a042d8eeaa2a1 # Parent 00224d11929900180d87713788009517ad384732 order log calc diff -r 00224d119299 -r f9169495d476 src/buddy.c --- a/src/buddy.c Sun Jan 26 17:11:52 2020 +0900 +++ b/src/buddy.c Sun Jan 26 18:20:40 2020 +0900 @@ -6,6 +6,7 @@ #include "mmu.h" #include "spinlock.h" #include "arm.h" +#include "ln.h" // this file implement the buddy memory allocator. Each order divides @@ -246,6 +247,7 @@ { uint8 *up; + ln(order); if ((order > MAX_ORD) || (order < MIN_ORD)) { panic("kmalloc: order out of range\n"); } diff -r 00224d119299 -r f9169495d476 src/ln.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ln.h Sun Jan 26 18:20:40 2020 +0900 @@ -0,0 +1,9 @@ +static inline int ln(int sz) { + int j = 1 << 6; + for (int i = 6; i < 12; i++) { + if (sz < j) return i; + j <<= 1; + } + return 12; +} +