00001 /* 00002 * kernel_super/memory/alloc.c 00003 * 00004 * Copyright (c) 2003-2004 Lukasz Dembinski <dembol@nasa.com.pl> 00005 * All Rights Reserved 00006 * 00007 * Date: 2004/01 00008 * Author: Lukasz Dembinski 00009 * Info: alloc.c core file 00010 * Contact: mailto: <dembol@nasa.com.pl> 00011 * 00012 */ 00013 00014 #include <agnix/init.h> 00015 #include <asm/types.h> 00016 #include <asm/bitops.h> 00017 #include <asm/memory.h> 00018 #include <asm/paging.h> 00019 00020 #include <agnix/memory.h> 00021 #include <agnix/bugs.h> 00022 #include <agnix/console.h> 00023 00024 #define MOD_NAME "MEM: " 00025 #define NO_PAGE 0 00026 00027 extern char _end; 00028 extern struct main_memory_s main_memory; 00029 00030 void (*put_free_pages_fn)(u32 addr, u8 order); 00031 u32 (*get_free_pages_fn)(u8 order); 00032 void (*put_free_dma_pages_fn)(u32 addr, u8 order); 00033 u32 (*get_free_dma_pages_fn)(u8 order); 00034 00035 struct allocator_s main_alloc; 00036 00037 void put_free_pages(u32 addr, u8 order) 00038 { 00039 return (*put_free_pages_fn)(addr, order); 00040 } 00041 00042 u32 get_free_pages(u8 order) 00043 { 00044 return (*get_free_pages_fn)(order); 00045 } 00046 00047 void put_free_dma_pages(u32 addr, u8 order) 00048 { 00049 return (*put_free_dma_pages_fn)(addr, order); 00050 } 00051 00052 u32 get_free_dma_pages(u8 order) 00053 { 00054 return (*get_free_dma_pages_fn)(order); 00055 } 00056 00057 int __init memalloc_init(void) 00058 { 00059 bootmem_init_bh(); 00060 bin_alloc_init((u32 *)&_end, 0, main_memory.mem_size); 00061 bootmem_init_dh(); 00062 buddy_alloc_init(); 00063 00064 return 0; 00065 }