[kernel] add assert to ipc object
This commit is contained in:
parent
2bbf98e5ed
commit
f706131fc6
67
src/ipc.c
67
src/ipc.c
|
@ -242,7 +242,10 @@ RTM_EXPORT(rt_sem_init);
|
|||
*/
|
||||
rt_err_t rt_sem_detach(rt_sem_t sem)
|
||||
{
|
||||
/* parameter check */
|
||||
RT_ASSERT(sem != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&sem->parent.parent) == RT_Object_Class_Semaphore);
|
||||
RT_ASSERT(rt_object_is_systemobject(&sem->parent.parent));
|
||||
|
||||
/* wakeup all suspend threads */
|
||||
rt_ipc_list_resume_all(&(sem->parent.suspend_thread));
|
||||
|
@ -303,7 +306,10 @@ rt_err_t rt_sem_delete(rt_sem_t sem)
|
|||
{
|
||||
RT_DEBUG_NOT_IN_INTERRUPT;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(sem != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&sem->parent.parent) == RT_Object_Class_Semaphore);
|
||||
RT_ASSERT(rt_object_is_systemobject(&sem->parent.parent) == RT_FALSE);
|
||||
|
||||
/* wakeup all suspend threads */
|
||||
rt_ipc_list_resume_all(&(sem->parent.suspend_thread));
|
||||
|
@ -330,7 +336,9 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time)
|
|||
register rt_base_t temp;
|
||||
struct rt_thread *thread;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(sem != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&sem->parent.parent) == RT_Object_Class_Semaphore);
|
||||
|
||||
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(sem->parent.parent)));
|
||||
|
||||
|
@ -437,6 +445,10 @@ rt_err_t rt_sem_release(rt_sem_t sem)
|
|||
register rt_base_t temp;
|
||||
register rt_bool_t need_schedule;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(sem != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&sem->parent.parent) == RT_Object_Class_Semaphore);
|
||||
|
||||
RT_OBJECT_HOOK_CALL(rt_object_put_hook, (&(sem->parent.parent)));
|
||||
|
||||
need_schedule = RT_FALSE;
|
||||
|
@ -481,7 +493,10 @@ RTM_EXPORT(rt_sem_release);
|
|||
rt_err_t rt_sem_control(rt_sem_t sem, int cmd, void *arg)
|
||||
{
|
||||
rt_ubase_t level;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(sem != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&sem->parent.parent) == RT_Object_Class_Semaphore);
|
||||
|
||||
if (cmd == RT_IPC_CMD_RESET)
|
||||
{
|
||||
|
@ -524,6 +539,7 @@ RTM_EXPORT(rt_sem_control);
|
|||
*/
|
||||
rt_err_t rt_mutex_init(rt_mutex_t mutex, const char *name, rt_uint8_t flag)
|
||||
{
|
||||
/* parameter check */
|
||||
RT_ASSERT(mutex != RT_NULL);
|
||||
|
||||
/* init object */
|
||||
|
@ -555,7 +571,10 @@ RTM_EXPORT(rt_mutex_init);
|
|||
*/
|
||||
rt_err_t rt_mutex_detach(rt_mutex_t mutex)
|
||||
{
|
||||
/* parameter check */
|
||||
RT_ASSERT(mutex != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mutex->parent.parent) == RT_Object_Class_Mutex);
|
||||
RT_ASSERT(rt_object_is_systemobject(&mutex->parent.parent));
|
||||
|
||||
/* wakeup all suspend threads */
|
||||
rt_ipc_list_resume_all(&(mutex->parent.suspend_thread));
|
||||
|
@ -617,7 +636,10 @@ rt_err_t rt_mutex_delete(rt_mutex_t mutex)
|
|||
{
|
||||
RT_DEBUG_NOT_IN_INTERRUPT;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mutex != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mutex->parent.parent) == RT_Object_Class_Mutex);
|
||||
RT_ASSERT(rt_object_is_systemobject(&mutex->parent.parent) == RT_FALSE);
|
||||
|
||||
/* wakeup all suspend threads */
|
||||
rt_ipc_list_resume_all(&(mutex->parent.suspend_thread));
|
||||
|
@ -647,7 +669,9 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t time)
|
|||
/* this function must not be used in interrupt even if time = 0 */
|
||||
RT_DEBUG_IN_THREAD_CONTEXT;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mutex != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mutex->parent.parent) == RT_Object_Class_Mutex);
|
||||
|
||||
/* get current thread */
|
||||
thread = rt_thread_self();
|
||||
|
@ -779,6 +803,10 @@ rt_err_t rt_mutex_release(rt_mutex_t mutex)
|
|||
struct rt_thread *thread;
|
||||
rt_bool_t need_schedule;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mutex != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mutex->parent.parent) == RT_Object_Class_Mutex);
|
||||
|
||||
need_schedule = RT_FALSE;
|
||||
|
||||
/* only thread could release mutex because we need test the ownership */
|
||||
|
@ -874,6 +902,10 @@ RTM_EXPORT(rt_mutex_release);
|
|||
*/
|
||||
rt_err_t rt_mutex_control(rt_mutex_t mutex, int cmd, void *arg)
|
||||
{
|
||||
/* parameter check */
|
||||
RT_ASSERT(mutex != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mutex->parent.parent) == RT_Object_Class_Mutex);
|
||||
|
||||
return -RT_ERROR;
|
||||
}
|
||||
RTM_EXPORT(rt_mutex_control);
|
||||
|
@ -892,6 +924,7 @@ RTM_EXPORT(rt_mutex_control);
|
|||
*/
|
||||
rt_err_t rt_event_init(rt_event_t event, const char *name, rt_uint8_t flag)
|
||||
{
|
||||
/* parameter check */
|
||||
RT_ASSERT(event != RT_NULL);
|
||||
|
||||
/* init object */
|
||||
|
@ -921,6 +954,8 @@ rt_err_t rt_event_detach(rt_event_t event)
|
|||
{
|
||||
/* parameter check */
|
||||
RT_ASSERT(event != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&event->parent.parent) == RT_Object_Class_Event);
|
||||
RT_ASSERT(rt_object_is_systemobject(&event->parent.parent));
|
||||
|
||||
/* resume all suspended thread */
|
||||
rt_ipc_list_resume_all(&(event->parent.suspend_thread));
|
||||
|
@ -976,6 +1011,8 @@ rt_err_t rt_event_delete(rt_event_t event)
|
|||
{
|
||||
/* parameter check */
|
||||
RT_ASSERT(event != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&event->parent.parent) == RT_Object_Class_Event);
|
||||
RT_ASSERT(rt_object_is_systemobject(&event->parent.parent) == RT_FALSE);
|
||||
|
||||
RT_DEBUG_NOT_IN_INTERRUPT;
|
||||
|
||||
|
@ -1009,6 +1046,8 @@ rt_err_t rt_event_send(rt_event_t event, rt_uint32_t set)
|
|||
|
||||
/* parameter check */
|
||||
RT_ASSERT(event != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&event->parent.parent) == RT_Object_Class_Event);
|
||||
|
||||
if (set == 0)
|
||||
return -RT_ERROR;
|
||||
|
||||
|
@ -1109,6 +1148,8 @@ rt_err_t rt_event_recv(rt_event_t event,
|
|||
|
||||
/* parameter check */
|
||||
RT_ASSERT(event != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&event->parent.parent) == RT_Object_Class_Event);
|
||||
|
||||
if (set == 0)
|
||||
return -RT_ERROR;
|
||||
|
||||
|
@ -1218,8 +1259,11 @@ RTM_EXPORT(rt_event_recv);
|
|||
rt_err_t rt_event_control(rt_event_t event, int cmd, void *arg)
|
||||
{
|
||||
rt_ubase_t level;
|
||||
RT_ASSERT(event != RT_NULL);
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(event != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&event->parent.parent) == RT_Object_Class_Event);
|
||||
|
||||
if (cmd == RT_IPC_CMD_RESET)
|
||||
{
|
||||
/* disable interrupt */
|
||||
|
@ -1299,6 +1343,8 @@ rt_err_t rt_mb_detach(rt_mailbox_t mb)
|
|||
{
|
||||
/* parameter check */
|
||||
RT_ASSERT(mb != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mb->parent.parent) == RT_Object_Class_MailBox);
|
||||
RT_ASSERT(rt_object_is_systemobject(&mb->parent.parent));
|
||||
|
||||
/* resume all suspended thread */
|
||||
rt_ipc_list_resume_all(&(mb->parent.suspend_thread));
|
||||
|
@ -1373,6 +1419,8 @@ rt_err_t rt_mb_delete(rt_mailbox_t mb)
|
|||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mb != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mb->parent.parent) == RT_Object_Class_MailBox);
|
||||
RT_ASSERT(rt_object_is_systemobject(&mb->parent.parent) == RT_FALSE);
|
||||
|
||||
/* resume all suspended thread */
|
||||
rt_ipc_list_resume_all(&(mb->parent.suspend_thread));
|
||||
|
@ -1411,6 +1459,7 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
|
|||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mb != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mb->parent.parent) == RT_Object_Class_MailBox);
|
||||
|
||||
/* initialize delta tick */
|
||||
tick_delta = 0;
|
||||
|
@ -1556,6 +1605,7 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_uint32_t *value, rt_int32_t timeout)
|
|||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mb != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mb->parent.parent) == RT_Object_Class_MailBox);
|
||||
|
||||
/* initialize delta tick */
|
||||
tick_delta = 0;
|
||||
|
@ -1686,7 +1736,10 @@ RTM_EXPORT(rt_mb_recv);
|
|||
rt_err_t rt_mb_control(rt_mailbox_t mb, int cmd, void *arg)
|
||||
{
|
||||
rt_ubase_t level;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mb != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mb->parent.parent) == RT_Object_Class_MailBox);
|
||||
|
||||
if (cmd == RT_IPC_CMD_RESET)
|
||||
{
|
||||
|
@ -1796,6 +1849,8 @@ rt_err_t rt_mq_detach(rt_mq_t mq)
|
|||
{
|
||||
/* parameter check */
|
||||
RT_ASSERT(mq != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mq->parent.parent) == RT_Object_Class_MessageQueue);
|
||||
RT_ASSERT(rt_object_is_systemobject(&mq->parent.parent));
|
||||
|
||||
/* resume all suspended thread */
|
||||
rt_ipc_list_resume_all(&mq->parent.suspend_thread);
|
||||
|
@ -1889,6 +1944,8 @@ rt_err_t rt_mq_delete(rt_mq_t mq)
|
|||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mq != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mq->parent.parent) == RT_Object_Class_MessageQueue);
|
||||
RT_ASSERT(rt_object_is_systemobject(&mq->parent.parent) == RT_FALSE);
|
||||
|
||||
/* resume all suspended thread */
|
||||
rt_ipc_list_resume_all(&(mq->parent.suspend_thread));
|
||||
|
@ -1919,7 +1976,9 @@ rt_err_t rt_mq_send(rt_mq_t mq, void *buffer, rt_size_t size)
|
|||
register rt_ubase_t temp;
|
||||
struct rt_mq_message *msg;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mq != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mq->parent.parent) == RT_Object_Class_MessageQueue);
|
||||
RT_ASSERT(buffer != RT_NULL);
|
||||
RT_ASSERT(size != 0);
|
||||
|
||||
|
@ -2007,7 +2066,9 @@ rt_err_t rt_mq_urgent(rt_mq_t mq, void *buffer, rt_size_t size)
|
|||
register rt_ubase_t temp;
|
||||
struct rt_mq_message *msg;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mq != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mq->parent.parent) == RT_Object_Class_MessageQueue);
|
||||
RT_ASSERT(buffer != RT_NULL);
|
||||
RT_ASSERT(size != 0);
|
||||
|
||||
|
@ -2095,7 +2156,9 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
|
|||
struct rt_mq_message *msg;
|
||||
rt_uint32_t tick_delta;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mq != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mq->parent.parent) == RT_Object_Class_MessageQueue);
|
||||
RT_ASSERT(buffer != RT_NULL);
|
||||
RT_ASSERT(size != 0);
|
||||
|
||||
|
@ -2229,7 +2292,9 @@ rt_err_t rt_mq_control(rt_mq_t mq, int cmd, void *arg)
|
|||
rt_ubase_t level;
|
||||
struct rt_mq_message *msg;
|
||||
|
||||
/* parameter check */
|
||||
RT_ASSERT(mq != RT_NULL);
|
||||
RT_ASSERT(rt_object_get_type(&mq->parent.parent) == RT_Object_Class_MessageQueue);
|
||||
|
||||
if (cmd == RT_IPC_CMD_RESET)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue