From e521decf2eaf88c662fba12b2d9f07b68bd4979c Mon Sep 17 00:00:00 2001 From: emlslxl Date: Fri, 15 Sep 2017 11:02:24 +0800 Subject: 根据documentation/coding_style_cn.txt约定 对内核src和include目录下的文件代码进行格式化 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ipc.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/ipc.c') diff --git a/src/ipc.c b/src/ipc.c index 9ecd602099..960bed053f 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -1382,8 +1382,8 @@ rt_err_t rt_mb_delete(rt_mailbox_t mb) else #endif - /* free mailbox pool */ - RT_KERNEL_FREE(mb->msg_pool); + /* free mailbox pool */ + RT_KERNEL_FREE(mb->msg_pool); /* delete mailbox object */ rt_object_delete(&(mb->parent.parent)); @@ -1775,7 +1775,7 @@ rt_err_t rt_mq_init(rt_mq_t mq, for (temp = 0; temp < mq->max_msgs; temp ++) { head = (struct rt_mq_message *)((rt_uint8_t *)mq->msg_pool + - temp * (mq->msg_size + sizeof(struct rt_mq_message))); + temp * (mq->msg_size + sizeof(struct rt_mq_message))); head->next = mq->msg_queue_free; mq->msg_queue_free = head; } @@ -1849,7 +1849,7 @@ rt_mq_t rt_mq_create(const char *name, mq->max_msgs = max_msgs; /* allocate message pool */ - mq->msg_pool = RT_KERNEL_MALLOC((mq->msg_size + sizeof(struct rt_mq_message))* mq->max_msgs); + mq->msg_pool = RT_KERNEL_MALLOC((mq->msg_size + sizeof(struct rt_mq_message)) * mq->max_msgs); if (mq->msg_pool == RT_NULL) { rt_mq_delete(mq); @@ -1866,7 +1866,7 @@ rt_mq_t rt_mq_create(const char *name, for (temp = 0; temp < mq->max_msgs; temp ++) { head = (struct rt_mq_message *)((rt_uint8_t *)mq->msg_pool + - temp * (mq->msg_size + sizeof(struct rt_mq_message))); + temp * (mq->msg_size + sizeof(struct rt_mq_message))); head->next = mq->msg_queue_free; mq->msg_queue_free = head; } @@ -1902,8 +1902,8 @@ rt_err_t rt_mq_delete(rt_mq_t mq) else #endif - /* free message queue pool */ - RT_KERNEL_FREE(mq->msg_pool); + /* free message queue pool */ + RT_KERNEL_FREE(mq->msg_pool); /* delete message queue object */ rt_object_delete(&(mq->parent.parent)); @@ -1942,7 +1942,7 @@ rt_err_t rt_mq_send(rt_mq_t mq, void *buffer, rt_size_t size) temp = rt_hw_interrupt_disable(); /* get a free list, there must be an empty item */ - msg = (struct rt_mq_message*)mq->msg_queue_free; + msg = (struct rt_mq_message *)mq->msg_queue_free; /* message queue is full */ if (msg == RT_NULL) { -- cgit v1.3.1 From e9a77b513f0a4b37d539a030592a61b08d03602d Mon Sep 17 00:00:00 2001 From: bernard Date: Fri, 29 Sep 2017 10:23:49 +0800 Subject: [Kernel] mutex can be used before scheduler startup. --- src/ipc.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src/ipc.c') diff --git a/src/ipc.c b/src/ipc.c index 9ecd602099..f426ac60d7 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -644,17 +644,18 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t time) register rt_base_t temp; struct rt_thread *thread; + RT_ASSERT(mutex != RT_NULL); + + /* get current thread */ + thread = rt_thread_self(); + if (!thread) return RT_EOK; /* return directory if scheduler not started */ + /* this function must not be used in interrupt even if time = 0 */ RT_DEBUG_IN_THREAD_CONTEXT; - RT_ASSERT(mutex != RT_NULL); - /* disable interrupt */ temp = rt_hw_interrupt_disable(); - /* get current thread */ - thread = rt_thread_self(); - RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(mutex->parent.parent))); RT_DEBUG_LOG(RT_DEBUG_IPC, @@ -777,11 +778,12 @@ rt_err_t rt_mutex_release(rt_mutex_t mutex) need_schedule = RT_FALSE; - /* only thread could release mutex because we need test the ownership */ - RT_DEBUG_IN_THREAD_CONTEXT; - /* get current thread */ thread = rt_thread_self(); + if (!thread) return RT_EOK; + + /* only thread could release mutex because we need test the ownership */ + RT_DEBUG_IN_THREAD_CONTEXT; /* disable interrupt */ temp = rt_hw_interrupt_disable(); -- cgit v1.3.1