Преглед изворни кода

fix zone release bug

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1209 bbd45198-f89e-11dd-88c7-29a3b14d5316
qiuyiuestc пре 14 година
родитељ
комит
5b440a3429
1 измењених фајлова са 3 додато и 3 уклоњено
  1. 3 3
      src/slab.c

+ 3 - 3
src/slab.c

@@ -12,6 +12,7 @@
  * 2008-07-12     Bernard      the first version
  * 2010-07-13     Bernard      fix RT_ALIGN issue found by kuronca
  * 2010-10-23     yi.qiu      add module memory allocator
+ * 2010-12-18     yi.qiu      fix zone release bug 
  */
 
 /*
@@ -507,7 +508,6 @@ void *rt_malloc(rt_size_t size)
 	slab_zone *z;
 	rt_int32_t zi;
 	slab_chunk *chunk;
-	rt_base_t interrupt_level;
 	struct memusage *kup;
 
 	/* zero size, return RT_NULL */
@@ -818,7 +818,7 @@ void rt_free(void *ptr)
 	/* get memory usage */
 #ifdef RT_SLAB_DEBUG
 	{
-		rt_uint32 addr = ((rt_uint32_t)ptr & ~RT_MM_PAGE_MASK);
+		rt_uint32_t addr = ((rt_uint32_t)ptr & ~RT_MM_PAGE_MASK);
 		rt_kprintf("free a memory 0x%x and align to 0x%x, kup index %d\n",
 			(rt_uint32_t)ptr,
 			(rt_uint32_t)addr,
@@ -926,7 +926,7 @@ void rt_free(void *ptr)
 			rt_sem_release(&heap_sem);
 
 			/* release pages */
-			rt_page_free(z, zone_size);
+			rt_page_free(z, zone_size / RT_MM_PAGE_SIZE);
 			return;
 		}
 	}