diff --git a/include/kernel/mr_fifo.h b/include/kernel/mr_fifo.h index f17307c..9015ea6 100644 --- a/include/kernel/mr_fifo.h +++ b/include/kernel/mr_fifo.h @@ -49,13 +49,13 @@ mr_uint32_t mr_fifo_init(mr_fifo_t *fifo, void *buf, mr_uint32_t size, * @brief This function allocates a fifo. * * @param fifo The fifo. - * @param size The buffer size(bytes). + * @param num The buffer number. * @param elem_size The element size(bytes). * @return The element capacity(number). * * @note The buffer will be aligned up to a power of 2. */ -mr_uint32_t mr_fifo_alloc(mr_fifo_t *fifo, mr_uint32_t size, +mr_uint32_t mr_fifo_alloc(mr_fifo_t *fifo, mr_uint32_t num, mr_uint32_t elem_size); /** diff --git a/include/kernel/mr_list.h b/include/kernel/mr_list.h index 97daac4..2919e50 100644 --- a/include/kernel/mr_list.h +++ b/include/kernel/mr_list.h @@ -152,7 +152,7 @@ MR_INLINE void mr_list_move(mr_list_t *entry, mr_list_t *head) { */ MR_INLINE mr_bool_t mr_list_is_empty(mr_list_t *head) { /* Check if list is empty */ - return (head->next == head) ? MR_TRUE : MR_FALSE; + return head->next == head; } /** diff --git a/include/kernel/mr_workqueue.h b/include/kernel/mr_workqueue.h index 370eb6b..fb0cd62 100644 --- a/include/kernel/mr_workqueue.h +++ b/include/kernel/mr_workqueue.h @@ -44,7 +44,7 @@ typedef struct mr_workqueue { mr_atomic_t running; mr_atomic_t dying; mr_list_t t_list; - mr_list_t list; + mr_list_t r_list; #if defined(MR_USE_WORKQUEUE_HOOK) mr_workqueue_hook_t hook; #endif /* defined(MR_USE_WORKQUEUE_HOOK) */ diff --git a/include/libc/mr_malloc.h b/include/libc/mr_malloc.h index 1bb5030..eb8b5a7 100644 --- a/include/libc/mr_malloc.h +++ b/include/libc/mr_malloc.h @@ -58,7 +58,7 @@ void *mr_malloc(mr_size_t size); void mr_free(void *mem); /** - * @brief This function returns the usable size of mem. + * @brief This function returns the usable size of memory. * * @param mem The memory. * @return The usable size. diff --git a/include/mr_config.h b/include/mr_config.h index 6dcd474..75e8706 100644 --- a/include/mr_config.h +++ b/include/mr_config.h @@ -5,27 +5,6 @@ extern "C" { #endif /* __cplusplus */ -#define MR_USE_PRINTF -#define MR_CFG_PRINTF_BUF_SIZE 64 -#define MR_USE_TIMER -#define MR_USE_WORKQUEUE -#define MR_USE_IRQ -#define MR_USE_IRQ_DEFER -#define MR_CFG_IRQ_TABLE_SIZE 32 -#define MR_CFG_CLOCK_HOOK_SIZE 2 - -#define MR_USE_ENTRY -#define MR_USE_64BIT_ARCH -#define MR_USE_MALLOC -#define MR_CFG_HEAP_SIZE 4096 -#define MR_USE_SPRINTF -#define MR_USE_ASSERT -#define MR_USE_STRING -#define MR_USE_STRING_SAFE -#define MR_USE_SCANF -#define MR_USE_TYPES -#define MR_USE_ERRNO - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/kernel/clock.c b/kernel/clock.c index 76c6065..61bf989 100644 --- a/kernel/clock.c +++ b/kernel/clock.c @@ -72,5 +72,5 @@ mr_err_t mr_clock_hook_add(mr_clock_hook_t *entry) { MR_ASSERT(entry != MR_NULL); /* Add hook to clock */ - return mr_hook_add(&__hook, (mr_ptr_t)entry); + return mr_hook_add(&__hook, entry); } diff --git a/kernel/fifo.c b/kernel/fifo.c index 055f10f..0eb3e95 100644 --- a/kernel/fifo.c +++ b/kernel/fifo.c @@ -33,16 +33,17 @@ mr_uint32_t mr_fifo_init(mr_fifo_t *fifo, void *buf, mr_uint32_t size, return size; } -mr_uint32_t mr_fifo_alloc(mr_fifo_t *fifo, mr_uint32_t size, +mr_uint32_t mr_fifo_alloc(mr_fifo_t *fifo, mr_uint32_t num, mr_uint32_t elem_size) { + mr_uint32_t size; void *buf; /* Check parameter */ MR_ASSERT(fifo != MR_NULL); - MR_ASSERT((size >= 2) && (elem_size > 0) && (elem_size <= size)); + MR_ASSERT((num > 0) && (elem_size > 0)); /* Align size(up to power of 2) */ - size = FIFO_ALIGN_POW2_UP(size); + size = FIFO_ALIGN_POW2_UP(num * elem_size); /* Allocate buffer */ buf = mr_realloc(fifo->buf, size); @@ -146,7 +147,7 @@ mr_uint32_t mr_fifo_in(mr_fifo_t *fifo, const void *buf, mr_uint32_t num) { /* Push buffer */ mr_memcpy((mr_uint8_t *)fifo->buf + in, buf, n); - mr_memcpy(fifo->buf, ((mr_uint8_t *)buf) + n, num - n); + mr_memcpy(fifo->buf, (mr_uint8_t *)buf + n, num - n); fifo->in += num2; return num2; } @@ -162,7 +163,7 @@ mr_uint32_t mr_fifo_in_overwrite(mr_fifo_t *fifo, const void *buf, /* Limit number */ capacity = fifo->mask + 1; if (num > capacity) { - buf = ((mr_uint8_t *)buf) + ((num - capacity) * fifo->elem_size); + buf = (mr_uint8_t *)buf + ((num - capacity) * fifo->elem_size); num = capacity; } diff --git a/kernel/hook.c b/kernel/hook.c index e071a7c..2d92dc1 100644 --- a/kernel/hook.c +++ b/kernel/hook.c @@ -19,8 +19,8 @@ void mr_hook_init(mr_hook_t *hook, mr_ptr_t *entry, mr_size_t size) { MR_ASSERT((entry != MR_NULL) || (size == 0)); /* Initialize hook */ - hook->size = entry ? size : 0; hook->entry = entry; + hook->size = size; hook->next = 0; } diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 0ea571b..9a1b05b 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -73,7 +73,7 @@ static void queue_timer_entry(mr_timer_t *timer, void *param) { } /* Move work to workqueue work list */ - mr_list_move(&work->list, &queue->list); + mr_list_move(&work->list, &queue->r_list); } /* Check if workqueue need set timer tick */ @@ -114,7 +114,7 @@ static mr_err_t workqueue_init(mr_workqueue_t *queue, const mr_class_t *class) { mr_atomic_init(&queue->running, MR_FALSE); mr_atomic_init(&queue->dying, MR_FALSE); mr_list_init(&queue->t_list); - mr_list_init(&queue->list); + mr_list_init(&queue->r_list); #if defined(MR_USE_WORKQUEUE_HOOK) queue->hook.suspend = MR_NULL; queue->hook.wakeup = MR_NULL; @@ -201,7 +201,7 @@ mr_err_t mr_workqueue_execute(mr_workqueue_t *queue) { MR_ASSERT(MR_OBJECT_CLASS_IS_OR(queue, &__class1, &__class2)); /* Reduce unnecessary lock operations */ - if (mr_list_is_empty(&queue->list) + if (mr_list_is_empty(&queue->r_list) #if defined(MR_USE_WORKQUEUE_HOOK) && (!queue->hook.suspend) #endif /* defined(MR_USE_WORKQUEUE_HOOK) */ @@ -213,8 +213,8 @@ mr_err_t mr_workqueue_execute(mr_workqueue_t *queue) { mask = mr_spinlock_lock_irqsave(&__lock); /* Check workqueue work list */ - while (!mr_list_is_empty(&queue->list)) { - work = MR_LIST_ENTRY(queue->list.next, mr_work_t, list); + while (!mr_list_is_empty(&queue->r_list)) { + work = MR_LIST_ENTRY(queue->r_list.next, mr_work_t, list); /* Remove work from running list */ mr_list_del(&work->list); @@ -265,7 +265,7 @@ mr_err_t mr_workqueue_work(mr_workqueue_t *queue, mr_work_t *work) { } /* Add work to running list */ - mr_list_add(&queue->list, &work->list); + mr_list_add(&queue->r_list, &work->list); work->queue = queue; /* Unlock */ @@ -463,8 +463,8 @@ static void queue_del(mr_workqueue_t *queue) { } /* Remove work from workqueue running list */ - while (!mr_list_is_empty(&queue->list)) { - work = MR_LIST_ENTRY(&queue->list.next, mr_work_t, list); + while (!mr_list_is_empty(&queue->r_list)) { + work = MR_LIST_ENTRY(&queue->r_list.next, mr_work_t, list); mr_list_del(&work->list); } diff --git a/libc/string.c b/libc/string.c index 4292484..81ea721 100644 --- a/libc/string.c +++ b/libc/string.c @@ -90,7 +90,7 @@ void *mr_memcpy(void *dst, const void *src, mr_size_t size) { } } else { /* Copy aligned bytes */ - for (d = dst, s = src; (size >= sizeof(mr_uintptr_t)); + for (d = dst, s = src; size >= sizeof(mr_uintptr_t); size -= sizeof(mr_uintptr_t)) { *(mr_uintptr_t *)d = *(mr_uintptr_t *)s; d += sizeof(mr_uintptr_t);