diff options
| author | Bernard Xiong <[email protected]> | 2020-06-06 15:32:34 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-06-06 15:32:34 +0800 |
| commit | 08a8e75ae9f94175a37d302bb28375a07b78ccfd (patch) | |
| tree | 98381e9a0fcc4f6be2b8dd8df24ef7f9265a578e /components | |
| parent | 64ac4928f4a466fdf7eacd6c160a099549858028 (diff) | |
| parent | be43008c562dd785d6f7727bad0d93125d8a362b (diff) | |
Merge pull request #3662 from BernardXiong/fix_pthreads
Fix pthreads
Diffstat (limited to 'components')
| -rw-r--r-- | components/libc/compilers/newlib/syscalls.c | 4 | ||||
| -rw-r--r-- | components/libc/pthreads/SConscript | 20 | ||||
| -rw-r--r--[-rwxr-xr-x] | components/libc/pthreads/pthread.c | 2 |
3 files changed, 17 insertions, 9 deletions
diff --git a/components/libc/compilers/newlib/syscalls.c b/components/libc/compilers/newlib/syscalls.c index 59c1881ad1..228fa0d140 100644 --- a/components/libc/compilers/newlib/syscalls.c +++ b/components/libc/compilers/newlib/syscalls.c @@ -17,10 +17,6 @@ #include <dfs_posix.h> #endif -#ifdef RT_USING_PTHREADS -#include <pthread.h> -#endif - #ifdef RT_USING_MODULE #include <dlmodule.h> #endif diff --git a/components/libc/pthreads/SConscript b/components/libc/pthreads/SConscript index 1b7b75bfd1..e154ee0aa9 100644 --- a/components/libc/pthreads/SConscript +++ b/components/libc/pthreads/SConscript @@ -1,10 +1,22 @@ from building import * +from utils import VersionCmp -cwd = GetCurrentDir() -src = Glob('*.c') -CPPPATH = [cwd] +cwd = GetCurrentDir() +src = Glob('*.c') +CPPPATH = [cwd] +CPPDEFINES = [] + +# only enable POSIX.1b-1993 Real-time extensions +libc_ver = GetDepend('LIBC_VERSION') +try: + ver = libc_ver.split(' ') + ver = ver[1] + if VersionCmp(ver, "2.5.0") == 1: + CPPDEFINES = ['_POSIX_C_SOURCE=199309L'] +except : + pass group = DefineGroup('pthreads', src, - depend = ['RT_USING_PTHREADS', 'RT_USING_LIBC'], CPPPATH = CPPPATH) + depend = ['RT_USING_PTHREADS', 'RT_USING_LIBC'], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES) Return('group') diff --git a/components/libc/pthreads/pthread.c b/components/libc/pthreads/pthread.c index 5d3bc0796a..19a511b45b 100755..100644 --- a/components/libc/pthreads/pthread.c +++ b/components/libc/pthreads/pthread.c @@ -277,7 +277,7 @@ int pthread_create(pthread_t *pid, /* set pthread cleanup function and ptd data */ ptd->tid->cleanup = _pthread_cleanup; - ptd->tid->user_data = (rt_uint32_t)ptd; + ptd->tid->user_data = (rt_ubase_t)ptd; /* start thread */ if (rt_thread_startup(ptd->tid) == RT_EOK) |
