/kernel/trunk/generic/include/mm/frame.h |
---|
59,7 → 59,7 |
#define IS_BUDDY_LEFT_BLOCK_ABS(zone, frame) (((FRAME_INDEX_ABS((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0) |
#define IS_BUDDY_RIGHT_BLOCK_ABS(zone, frame) (((FRAME_INDEX_ABS((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1) |
#define ZONE_BLACKLIST_SIZE 4 |
#define ZONE_BLACKLIST_SIZE 8 |
struct zone { |
link_t link; /**< link to previous and next zone */ |
/kernel/trunk/generic/include/mm/as.h |
---|
48,7 → 48,8 |
#define USTACK_ADDRESS USTACK_ADDRESS_ARCH |
#define UDATA_ADDRESS UDATA_ADDRESS_ARCH |
#define FLAG_AS_KERNEL (1<<0) /**< Kernel address space. */ |
#define FLAG_AS_KERNEL (1 << 0) /**< Kernel address space. */ |
#define FLAG_AS_EARLYMALLOC (1 << 1) /**< Use early malloc */ |
enum as_area_type { |
AS_AREA_TEXT = 1, AS_AREA_DATA, AS_AREA_STACK |
/kernel/trunk/generic/src/mm/slab.c |
---|
756,6 → 756,10 |
spinlock_unlock(&slab_cache_lock); |
} |
#ifdef CONFIG_DEBUG |
static int _slab_initialized = 0; |
#endif |
void slab_cache_init(void) |
{ |
int i, size; |
788,6 → 792,9 |
size, 0, |
NULL,NULL,0); |
} |
#ifdef CONFIG_DEBUG |
_slab_initialized = 1; |
#endif |
} |
/**************************************/ |
795,7 → 802,8 |
void * kalloc(unsigned int size, int flags) |
{ |
int idx; |
ASSERT(_slab_initialized); |
ASSERT( size && size <= (1 << SLAB_MAX_MALLOC_W)); |
if (size < (1 << SLAB_MIN_MALLOC_W)) |
/kernel/trunk/generic/src/mm/as.c |
---|
65,7 → 65,7 |
void as_init(void) |
{ |
as_arch_init(); |
AS_KERNEL = as_create(FLAG_AS_KERNEL); |
AS_KERNEL = as_create(FLAG_AS_KERNEL | FLAG_AS_EARLYMALLOC); |
if (!AS_KERNEL) |
panic("can't create kernel address space\n"); |
} |
78,7 → 78,10 |
{ |
as_t *as; |
as = (as_t *) early_malloc(sizeof(as_t)); |
if (flags & FLAG_AS_EARLYMALLOC) |
as = (as_t *) early_malloc(sizeof(as_t)); |
else |
as = (as_t *) malloc(sizeof(as_t)); |
if (as) { |
list_initialize(&as->as_with_asid_link); |
spinlock_initialize(&as->lock, "as_lock"); |