diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2011-04-09 11:07:18 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-04-09 11:07:18 -0400 |
commit | f12a32e6f02c058c4996a138f16828f772059116 (patch) | |
tree | b637ad01f41ff6c3a73f0ff0f42e8a42afbacbac | |
parent | 38a7d692fc302518e2b10dbedff7841939044eca (diff) | |
download | glibc-f12a32e6f02c058c4996a138f16828f772059116.tar.gz glibc-f12a32e6f02c058c4996a138f16828f772059116.tar.xz glibc-f12a32e6f02c058c4996a138f16828f772059116.zip |
Make ppc sync_file_range cancelable.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c | 16 |
2 files changed, 18 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index a7989040ae..5549869081 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-04-08 Andreas Schwab <schwab@linux-m68k.org> + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c: + Make cancelable. + 2011-04-09 Ulrich Drepper <drepper@gmail.com> [BZ #12655] diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c index 1ca4ce66df..ccbca4d250 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c @@ -1,5 +1,5 @@ /* Selective file content synch'ing. - Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2009, 2011 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ #include <fcntl.h> #include <sys/types.h> -#include <sysdep.h> +#include <sysdep-cancel.h> #include <sys/syscall.h> @@ -29,7 +29,17 @@ int sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags) { - return INLINE_SYSCALL (sync_file_range2, 4, fd, flags, from, to); + if (SINGLE_THREAD_P) + return INLINE_SYSCALL (sync_file_range2, 4, fd, flags, from, to); + + int result; + int oldtype = LIBC_CANCEL_ASYNC (); + + result = INLINE_SYSCALL (sync_file_range2, 4, fd, flags, from, to); + + LIBC_CANCEL_RESET (oldtype); + + return result; } #else int |