summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2017-12-22 14:34:21 +0800
committerGitHub <[email protected]>2017-12-22 14:34:21 +0800
commit4ab7214a321477b0cb90d73f1d605ff40fd1a003 (patch)
treed9fb4f192e50738a7103d84e16d701b3d5ac3466
parent31151a775a32da61c1a3252c7f0684411f38ab80 (diff)
parent3d65afc7d5c0e606712ecf90abb08f2edc159dfa (diff)
Merge pull request #1128 from jiaooo/dev
[PThreads] add some parameter check and function definition etc.
-rw-r--r--components/libc/pthreads/pthread.h13
-rw-r--r--components/libc/pthreads/pthread_cond.c5
-rw-r--r--components/libc/pthreads/sched.h5
3 files changed, 17 insertions, 6 deletions
diff --git a/components/libc/pthreads/pthread.h b/components/libc/pthreads/pthread.h
index dd1c5b5bd2..35fa817c0f 100644
--- a/components/libc/pthreads/pthread.h
+++ b/components/libc/pthreads/pthread.h
@@ -27,6 +27,7 @@
#include <rtthread.h>
#include <posix_types.h>
+#include <sched.h>
#define PTHREAD_KEY_MAX 8
@@ -139,6 +140,11 @@ struct pthread_barrier
};
typedef struct pthread_barrier pthread_barrier_t;
+struct sched_param
+{
+ int sched_priority;
+};
+
/* pthread thread interface */
int pthread_attr_destroy(pthread_attr_t *attr);
int pthread_attr_init(pthread_attr_t *attr);
@@ -146,6 +152,8 @@ int pthread_attr_setdetachstate(pthread_attr_t *attr, int state);
int pthread_attr_getdetachstate(pthread_attr_t const *attr, int *state);
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
int pthread_attr_getschedpolicy(pthread_attr_t const *attr, int *policy);
+int pthread_attr_setschedparam(pthread_attr_t *attr,struct sched_param const *param);
+int pthread_attr_getschedparam(pthread_attr_t const *attr,struct sched_param *param);
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stack_size);
int pthread_attr_getstacksize(pthread_attr_t const *attr, size_t *stack_size);
int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stack_addr);
@@ -156,7 +164,10 @@ int pthread_attr_setstack(pthread_attr_t *attr,
int pthread_attr_getstack(pthread_attr_t const *attr,
void **stack_base,
size_t *stack_size);
-
+int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guard_size);
+int pthread_attr_getguardsize(pthread_attr_t const *attr, size_t *guard_size);
+int pthread_attr_setscope(pthread_attr_t *attr, int scope);
+int pthread_attr_getscope(pthread_attr_t const *attr);
int pthread_system_init(void);
int pthread_create (pthread_t *tid, const pthread_attr_t *attr,
void *(*start) (void *), void *arg);
diff --git a/components/libc/pthreads/pthread_cond.c b/components/libc/pthreads/pthread_cond.c
index 25628fc2b3..9349e84050 100644
--- a/components/libc/pthreads/pthread_cond.c
+++ b/components/libc/pthreads/pthread_cond.c
@@ -137,6 +137,9 @@ RTM_EXPORT(pthread_cond_destroy);
int pthread_cond_broadcast(pthread_cond_t *cond)
{
rt_err_t result;
+
+ if (cond == RT_NULL)
+ return EINVAL;
if (cond->attr == -1)
pthread_cond_init(cond, RT_NULL);
@@ -173,6 +176,8 @@ int pthread_cond_signal(pthread_cond_t *cond)
{
rt_err_t result;
+ if (cond == RT_NULL)
+ return EINVAL;
if (cond->attr == -1)
pthread_cond_init(cond, RT_NULL);
diff --git a/components/libc/pthreads/sched.h b/components/libc/pthreads/sched.h
index 173f3eb2de..f0fa17bfa1 100644
--- a/components/libc/pthreads/sched.h
+++ b/components/libc/pthreads/sched.h
@@ -37,11 +37,6 @@ enum
SCHED_MAX = SCHED_RR
};
-struct sched_param
-{
- int sched_priority;
-};
-
#ifdef __cplusplus
extern "C"
{