diff options
author | "Steven J. Hill" <sjhill@realitydiluted.com> | 2006-08-24 02:58:45 +0000 |
---|---|---|
committer | "Steven J. Hill" <sjhill@realitydiluted.com> | 2006-08-24 02:58:45 +0000 |
commit | 01f422c12f5799a44832eb26967a906edfc2ba55 (patch) | |
tree | 1e8bdcaab1f4da088cc1c490bf96c361a663e0c4 /libc/sysdeps/linux/common/fsync.c | |
parent | d2db9bdb4c79afcd4b09353346cd4eaf63b6cd2c (diff) | |
download | uClibc-alpine-01f422c12f5799a44832eb26967a906edfc2ba55.tar.bz2 uClibc-alpine-01f422c12f5799a44832eb26967a906edfc2ba55.tar.xz |
Well, this is everything for my NPTL implementation. The 'uClibc-nptl' branch is now the exact code that I have. I am going to re-run tests now to verify everything one more time. The next step after that is to merge from trunk with the latest stuff from Mike and Peter.
Diffstat (limited to 'libc/sysdeps/linux/common/fsync.c')
-rw-r--r-- | libc/sysdeps/linux/common/fsync.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/libc/sysdeps/linux/common/fsync.c b/libc/sysdeps/linux/common/fsync.c index 677f3e3d6..7ca709887 100644 --- a/libc/sysdeps/linux/common/fsync.c +++ b/libc/sysdeps/linux/common/fsync.c @@ -9,8 +9,27 @@ #include "syscalls.h" #include <unistd.h> +#ifdef __UCLIBC__HAS_THREADS__ +# include <sysdep-cancel.h> +#endif extern __typeof(fsync) __libc_fsync; -#define __NR___libc_fsync __NR_fsync +#ifdef __UCLIBC__HAS_THREADS__ +int __libc_fsync (int fd) +{ + if (SINGLE_THREAD_P) + return INLINE_SYSCALL (fsync, 1, fd); + + int oldtype = LIBC_CANCEL_ASYNC (); + + int result = INLINE_SYSCALL (fsync, 1, fd); + + LIBC_CANCEL_RESET (oldtype); + + return result; +} +#else +# define __NR___libc_fsync __NR_fsync _syscall1(int, __libc_fsync, int, fd); +#endif weak_alias(__libc_fsync, fsync) |