diff --git a/components/libc/pthreads/pthread.h b/components/libc/pthreads/pthread.h index dd1c5b5bd2e5f15560a1c76856050afa1ae0d10e..35fa817c0f5b2b3cf9bc21e9e5d8ff38006fa6fa 100644 --- a/components/libc/pthreads/pthread.h +++ b/components/libc/pthreads/pthread.h @@ -27,6 +27,7 @@ #include #include +#include #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 25628fc2b3da510dffd2f4b2935691b5f95e286a..9349e840505e4af348b3648f06d23a32f96960d3 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 173f3eb2deadb9199d7e9d992525ee16bf5fdf4f..f0fa17bfa16421f9cec4aac161038a9b2e909688 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" {