diff --git a/src/ipc.c b/src/ipc.c index f634c32dd34b8e8fcba236f72952cc7067eecac7..b25ba8cf7456913b9e038c81c99ae86df5107d36 100755 --- a/src/ipc.c +++ b/src/ipc.c @@ -485,9 +485,6 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time) RT_ASSERT(sem != RT_NULL); RT_ASSERT(rt_object_get_type(&sem->parent.parent) == RT_Object_Class_Semaphore); - /* current context checking */ - RT_DEBUG_SCHEDULER_AVAILABLE(time != 0); - RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(sem->parent.parent))); /* disable interrupt */ @@ -517,6 +514,9 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time) } else { + /* current context checking */ + RT_DEBUG_SCHEDULER_AVAILABLE(RT_TRUE); + /* semaphore is unavailable, push to suspend list */ /* get current thread */ thread = rt_thread_self(); diff --git a/src/memheap.c b/src/memheap.c index 7eb928b5c8d0c0ce013cce586488d781bab7e175..71e43580f4f580d825e036dbb2cb7b3f4f0adf07 100644 --- a/src/memheap.c +++ b/src/memheap.c @@ -203,7 +203,7 @@ void *rt_memheap_alloc(struct rt_memheap *heap, rt_size_t size) free_size = 0; /* lock memheap */ - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER); if (result != RT_EOK) @@ -316,7 +316,7 @@ void *rt_memheap_alloc(struct rt_memheap *heap, rt_size_t size) rt_memcpy(header_ptr->owner_thread_name, "NONE", sizeof(header_ptr->owner_thread_name)); #endif /* RT_USING_MEMTRACE */ - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* release lock */ rt_sem_release(&(heap->lock)); @@ -332,7 +332,7 @@ void *rt_memheap_alloc(struct rt_memheap *heap, rt_size_t size) return (void *)((rt_uint8_t *)header_ptr + RT_MEMHEAP_SIZE); } - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* release lock */ rt_sem_release(&(heap->lock)); @@ -394,7 +394,7 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize) void *new_ptr; struct rt_memheap_item *next_ptr; - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* lock memheap */ result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER); @@ -475,7 +475,7 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize) RT_DEBUG_LOG(RT_DEBUG_MEMHEAP, ("new ptr: next_free 0x%08x, prev_free 0x%08x", next_ptr->next_free, next_ptr->prev_free)); - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* release lock */ rt_sem_release(&(heap->lock)); @@ -485,7 +485,7 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize) } } - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* release lock */ rt_sem_release(&(heap->lock)); @@ -506,7 +506,7 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize) if (newsize + RT_MEMHEAP_SIZE + RT_MEMHEAP_MINIALLOC >= oldsize) return ptr; - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* lock memheap */ result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER); @@ -577,7 +577,7 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize) /* increment the available byte count. */ heap->available_size = heap->available_size + MEMITEM_SIZE(new_ptr); - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* release lock */ rt_sem_release(&(heap->lock)); @@ -630,7 +630,7 @@ void rt_memheap_free(void *ptr) RT_ASSERT(heap); RT_ASSERT(rt_object_get_type(&heap->parent) == RT_Object_Class_MemHeap); - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* lock memheap */ result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER); @@ -716,7 +716,7 @@ void rt_memheap_free(void *ptr) rt_memset(header_ptr->owner_thread_name, ' ', sizeof(header_ptr->owner_thread_name)); #endif /* RT_USING_MEMTRACE */ - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* release lock */ rt_sem_release(&(heap->lock)); @@ -744,7 +744,7 @@ void rt_memheap_info(struct rt_memheap *heap, { rt_err_t result; - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* lock memheap */ result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER); @@ -764,7 +764,7 @@ void rt_memheap_info(struct rt_memheap *heap, if (max_used != RT_NULL) *max_used = heap->max_used_size; - if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL) + if (heap->locked == RT_FALSE) { /* release lock */ rt_sem_release(&(heap->lock));