add pthread magic assert.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1112 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
bernard.xiong@gmail.com
2010-11-24 23:59:27 +00:00
parent f5d2b36adb
commit 7191e2220f
4 changed files with 118 additions and 155 deletions
+3 -21
View File
@@ -55,13 +55,15 @@ static posix_mq_t *posix_mq_find(const char* name)
for (iter = posix_mq_list; iter != RT_NULL; iter = iter->next)
{
object = (rt_object_t)&(iter->mq);
object = (rt_object_t)(iter->mq);
if (strncmp(object->name, name, RT_NAME_MAX) == 0)
{
return iter;
}
}
return RT_NULL;
}
int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat,
@@ -193,13 +195,6 @@ ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_pri
return -1;
}
/* permission check */
if (!(mqdes->flags & O_RDONLY))
{
rt_set_errno(EBADF);
return -1;
}
result = rt_mq_recv(mqdes->mq->mq, msg_ptr, msg_len, RT_WAITING_FOREVER);
if (result == RT_EOK)
return msg_len;
@@ -218,13 +213,6 @@ int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio)
return -1;
}
/* permission check */
if (!(mqdes->flags & O_WRONLY))
{
rt_set_errno(EBADF);
return -1;
}
result = rt_mq_send(mqdes->mq->mq, (void*)msg_ptr, msg_len);
if (result == RT_EOK)
return 0;
@@ -245,12 +233,6 @@ ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len,
rt_set_errno(EINVAL);
return -1;
}
/* permission check */
if (!(mqdes->flags & O_RDONLY))
{
rt_set_errno(EBADF);
return -1;
}
tick = libc_time_to_tick(abs_timeout);
+1
View File
@@ -65,6 +65,7 @@ int pthread_create (pthread_t *tid, const pthread_attr_t *attr,
ptd->canceled = 0;
ptd->cancelstate = PTHREAD_CANCEL_DISABLE;
ptd->canceltype = PTHREAD_CANCEL_DEFERRED;
ptd->magic = PTHREAD_MAGIC;
if (attr != RT_NULL) ptd->attr = *attr;
else
+6 -1
View File
@@ -48,9 +48,14 @@ typedef struct _pthread_data _pthread_data_t;
rt_inline _pthread_data_t* _pthread_get_data(pthread_t thread)
{
_pthread_data_t* ptd;
RT_ASSERT(thread != RT_NULL);
return (_pthread_data_t*)thread->user_data;
ptd = (_pthread_data_t*)thread->user_data;
RT_ASSERT(ptd != RT_NULL);
RT_ASSERT(ptd->magic == PTHREAD_MAGIC);
return ptd;
}
extern int libc_time_to_tick(const struct timespec *time);