diff options
Diffstat (limited to 'kernel/mem.c')
| -rw-r--r-- | kernel/mem.c | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/kernel/mem.c b/kernel/mem.c index b761c8c..4896272 100644 --- a/kernel/mem.c +++ b/kernel/mem.c @@ -38,6 +38,39 @@ int mmap_test(int bit) return _mmngr_memory_map[bit / 32] & (1 << (bit % 32)); } +void mmap_show_free () +{ + + int last_pos=0; + uint32_t last=_mmngr_memory_map[0]; + + for (int i=1; i< MEM_BITMAP_SIZE ; i++) + { + if (_mmngr_memory_map[i] != last||i==MEM_BITMAP_SIZE-1) + { + + if(last==0) + { + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"%d -%d free",last_pos*32,i*32); + } + else if(last==0xffffffff) + { + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"%d -%d full",last_pos*32,i*32); + } + else + { + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"%d -%d some free",last_pos*32,i*32); + } + + last_pos=i; + last=_mmngr_memory_map[i]; + + + } + } + +} + // int mmap_first_free () { @@ -61,6 +94,7 @@ int mmap_first_free () } + void pmmngr_init () { //! By default, all of memory is in use @@ -107,7 +141,7 @@ void* pmmngr_alloc_block () if (frame == -1) { - scr_put_string_nl("OUT OF MEM!"); + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"OUT OF MEMORY"); return 0; //out of memory } @@ -231,7 +265,7 @@ void mem_init(uint16_t *memmap,uint16_t entries) #ifdef MEM_PRINT_MEMORYMAP - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"%x : 0x%08x - 0x%08x", + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"type: %02d / range: 0x%08x - 0x%08x", memmap[8], (((uint32_t)memmap[1])<<16)+memmap[0], (((uint32_t)memmap[1])<<16)+memmap[0] @@ -249,7 +283,7 @@ void mem_init(uint16_t *memmap,uint16_t entries) } - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"Available Mem: %d bytes.",avail_mem); + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"Available Mem: %d bytes. (~%d MB)",avail_mem,avail_mem/1024/1024); log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"Available 4K blocks: %d blocks.",mem_free_blocks); } |
