From 4a735e5b471d1eff90177510c1793137da76f5e1 Mon Sep 17 00:00:00 2001 From: jjohnstn Date: Thu, 17 Dec 2009 19:22:23 +0000 Subject: [PATCH] 2009-12-17 Ralf Corsepius * libc/include/pthread.h: Add pthread_atfork, pthread_rwlock_unlock * libc/include/sys/stat.h: Use struct timespec st_*tim, blksize_t st_blksize, blkcnt_t st_blocks. Add st_*time compatibility macros. --- newlib/ChangeLog | 7 +++++++ newlib/libc/include/pthread.h | 20 +++++--------------- newlib/libc/include/sys/stat.h | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index a2561aea23..eddbb065ac 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,10 @@ +2009-12-17 Ralf Corsepius + + * libc/include/pthread.h: Add pthread_atfork, pthread_rwlock_unlock + * libc/include/sys/stat.h: Use struct timespec st_*tim, + blksize_t st_blksize, blkcnt_t st_blocks. + Add st_*time compatibility macros. + 2009-12-16 Joel Sherrill * libc/sys/rtems/machine/param.h: Only use sizeof(double) -1 diff --git a/newlib/libc/include/pthread.h b/newlib/libc/include/pthread.h index 8dc787244f..f5af16408f 100644 --- a/newlib/libc/include/pthread.h +++ b/newlib/libc/include/pthread.h @@ -33,21 +33,10 @@ extern "C" { #include #include -/* Register Fork Handlers, P1003.1c/Draft 10, P1003.1c/Draft 10, p. 27 - - If an OS does not support processes, then it falls under this provision - and may not provide pthread_atfork(): - - "Either the implementation shall support the pthread_atfork() function - as described above or the pthread_atfork() funciton shall not be - provided." - - NOTE: RTEMS does not provide pthread_atfork(). */ - -#if !defined(__rtems__) && !defined(__XMK__) -#warning "Add pthread_atfork() prototype" -#endif - +/* Register Fork Handlers */ +int _EXFUN(pthread_atfork,(void (*prepare)(void), void (*parent)(void), + void (*child)(void))); + /* Mutex Initialization Attributes, P1003.1c/Draft 10, p. 81 */ int _EXFUN(pthread_mutexattr_init, (pthread_mutexattr_t *__attr)); @@ -345,6 +334,7 @@ int _EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_timedrdlock, (pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime)); +int _EXFUN(pthread_rwlock_unlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_timedwrlock, diff --git a/newlib/libc/include/sys/stat.h b/newlib/libc/include/sys/stat.h index 06a71a9789..9d8bdfb656 100644 --- a/newlib/libc/include/sys/stat.h +++ b/newlib/libc/include/sys/stat.h @@ -32,6 +32,13 @@ struct stat gid_t st_gid; dev_t st_rdev; off_t st_size; +#if defined(__rtems__) + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + blksize_t st_blksize; + blkcnt_t st_blocks; +#else /* SysV/sco doesn't have the rest... But Solaris, eabi does. */ #if defined(__svr4__) && !defined(__PPC__) && !defined(__sun__) time_t st_atime; @@ -48,7 +55,15 @@ struct stat long st_blocks; long st_spare4[2]; #endif +#endif }; + +#if defined(__rtems__) +#define st_atime st_atim.tv_sec +#define st_ctime st_ctim.tv_sec +#define st_mtime st_mtim.tv_sec +#endif + #endif #define _IFMT 0170000 /* type of file */ -- 2.11.0