[kernel] Revert modifications to the semaphore (#5682)
This commit is contained in:
parent
aa80ba25d4
commit
4562ae1246
|
@ -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(sem != RT_NULL);
|
||||||
RT_ASSERT(rt_object_get_type(&sem->parent.parent) == RT_Object_Class_Semaphore);
|
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)));
|
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(sem->parent.parent)));
|
||||||
|
|
||||||
/* disable interrupt */
|
/* disable interrupt */
|
||||||
|
@ -517,6 +514,9 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* current context checking */
|
||||||
|
RT_DEBUG_SCHEDULER_AVAILABLE(RT_TRUE);
|
||||||
|
|
||||||
/* semaphore is unavailable, push to suspend list */
|
/* semaphore is unavailable, push to suspend list */
|
||||||
/* get current thread */
|
/* get current thread */
|
||||||
thread = rt_thread_self();
|
thread = rt_thread_self();
|
||||||
|
|
|
@ -203,7 +203,7 @@ void *rt_memheap_alloc(struct rt_memheap *heap, rt_size_t size)
|
||||||
free_size = 0;
|
free_size = 0;
|
||||||
|
|
||||||
/* lock memheap */
|
/* 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);
|
result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER);
|
||||||
if (result != RT_EOK)
|
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));
|
rt_memcpy(header_ptr->owner_thread_name, "NONE", sizeof(header_ptr->owner_thread_name));
|
||||||
#endif /* RT_USING_MEMTRACE */
|
#endif /* RT_USING_MEMTRACE */
|
||||||
|
|
||||||
if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL)
|
if (heap->locked == RT_FALSE)
|
||||||
{
|
{
|
||||||
/* release lock */
|
/* release lock */
|
||||||
rt_sem_release(&(heap->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);
|
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 */
|
/* release lock */
|
||||||
rt_sem_release(&(heap->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;
|
void *new_ptr;
|
||||||
struct rt_memheap_item *next_ptr;
|
struct rt_memheap_item *next_ptr;
|
||||||
|
|
||||||
if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL)
|
if (heap->locked == RT_FALSE)
|
||||||
{
|
{
|
||||||
/* lock memheap */
|
/* lock memheap */
|
||||||
result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER);
|
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",
|
RT_DEBUG_LOG(RT_DEBUG_MEMHEAP, ("new ptr: next_free 0x%08x, prev_free 0x%08x",
|
||||||
next_ptr->next_free,
|
next_ptr->next_free,
|
||||||
next_ptr->prev_free));
|
next_ptr->prev_free));
|
||||||
if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL)
|
if (heap->locked == RT_FALSE)
|
||||||
{
|
{
|
||||||
/* release lock */
|
/* release lock */
|
||||||
rt_sem_release(&(heap->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 */
|
/* release lock */
|
||||||
rt_sem_release(&(heap->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)
|
if (newsize + RT_MEMHEAP_SIZE + RT_MEMHEAP_MINIALLOC >= oldsize)
|
||||||
return ptr;
|
return ptr;
|
||||||
|
|
||||||
if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL)
|
if (heap->locked == RT_FALSE)
|
||||||
{
|
{
|
||||||
/* lock memheap */
|
/* lock memheap */
|
||||||
result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER);
|
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. */
|
/* increment the available byte count. */
|
||||||
heap->available_size = heap->available_size + MEMITEM_SIZE(new_ptr);
|
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 */
|
/* release lock */
|
||||||
rt_sem_release(&(heap->lock));
|
rt_sem_release(&(heap->lock));
|
||||||
|
@ -630,7 +630,7 @@ void rt_memheap_free(void *ptr)
|
||||||
RT_ASSERT(heap);
|
RT_ASSERT(heap);
|
||||||
RT_ASSERT(rt_object_get_type(&heap->parent) == RT_Object_Class_MemHeap);
|
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 */
|
/* lock memheap */
|
||||||
result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER);
|
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));
|
rt_memset(header_ptr->owner_thread_name, ' ', sizeof(header_ptr->owner_thread_name));
|
||||||
#endif /* RT_USING_MEMTRACE */
|
#endif /* RT_USING_MEMTRACE */
|
||||||
|
|
||||||
if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL)
|
if (heap->locked == RT_FALSE)
|
||||||
{
|
{
|
||||||
/* release lock */
|
/* release lock */
|
||||||
rt_sem_release(&(heap->lock));
|
rt_sem_release(&(heap->lock));
|
||||||
|
@ -744,7 +744,7 @@ void rt_memheap_info(struct rt_memheap *heap,
|
||||||
{
|
{
|
||||||
rt_err_t result;
|
rt_err_t result;
|
||||||
|
|
||||||
if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL)
|
if (heap->locked == RT_FALSE)
|
||||||
{
|
{
|
||||||
/* lock memheap */
|
/* lock memheap */
|
||||||
result = rt_sem_take(&(heap->lock), RT_WAITING_FOREVER);
|
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)
|
if (max_used != RT_NULL)
|
||||||
*max_used = heap->max_used_size;
|
*max_used = heap->max_used_size;
|
||||||
|
|
||||||
if (heap->locked == RT_FALSE && rt_thread_self() != RT_NULL)
|
if (heap->locked == RT_FALSE)
|
||||||
{
|
{
|
||||||
/* release lock */
|
/* release lock */
|
||||||
rt_sem_release(&(heap->lock));
|
rt_sem_release(&(heap->lock));
|
||||||
|
|
Loading…
Reference in New Issue