This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.13-60-g3167dad
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 1 Apr 2011 15:33:43 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.13-60-g3167dad
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 3167dad07cf528e7464320c160a61eba0df747c8 (commit)
from 748876bf1c45cd10f998f8578c434156eae53b7e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3167dad07cf528e7464320c160a61eba0df747c8
commit 3167dad07cf528e7464320c160a61eba0df747c8
Author: Ulrich Drepper <drepper@gmail.com>
Date: Fri Apr 1 11:33:14 2011 -0400
Also make x86 sync_file_range a cancellation point.
diff --git a/ChangeLog b/ChangeLog
index 806732d..aa6277a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,7 +9,14 @@
* sysdeps/unix/sysv/linux/wordsize-64/fallocate.c: Likewise.
* sysdeps/unix/sysv/linux/sync_file_range.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Mark
- sync_file_range as cancellation point.
+ sync_file_range as cancellation point
+ * sysdeps/unix/sysv/linux/i386/sync_file_range.c: New file. This is
+ now a wrapper around __call_sync_file_range with cancellation handling.
+ * sysdeps/unix/sysv/linux/i386/sync_file_range.S: Renamed to ...
+ * sysdeps/unix/sysv/linux/i386/call_sync_file_range.S: ...this. Change
+ function name to __call_sync_file_range.
+ * sysdeps/unix/sysv/linux/i386/Makefile [subdir=io] (sysdep_routines):
+ Add call_sync_file_range.
2011-04-01 Andreas Schwab <schwab@redhat.com>
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index f52ee89..fc5a524 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -6,7 +6,10 @@ endif
ifeq ($(subdir),elf)
sysdep-others += lddlibc4
install-bin += lddlibc4
+endif
+ifeq ($(subdir),io)
+sysdep_routines += call_sync_file_range
endif
ifeq ($(subdir),resource)
diff --git a/sysdeps/unix/sysv/linux/i386/sync_file_range.S b/sysdeps/unix/sysv/linux/i386/call_sync_file_range.S
similarity index 92%
rename from sysdeps/unix/sysv/linux/i386/sync_file_range.S
rename to sysdeps/unix/sysv/linux/i386/call_sync_file_range.S
index 8544703..fb0ab49 100644
--- a/sysdeps/unix/sysv/linux/i386/sync_file_range.S
+++ b/sysdeps/unix/sysv/linux/i386/call_sync_file_range.S
@@ -1,5 +1,5 @@
/* Selective file content synch'ing.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 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
@@ -23,7 +23,7 @@
.text
-ENTRY (sync_file_range)
+ENTRY (__call_sync_file_range)
#ifdef __NR_sync_file_range
pushl %ebx
cfi_adjust_cfa_offset (4)
@@ -69,4 +69,4 @@ ENTRY (sync_file_range)
#endif
L(pseudo_end):
ret
-PSEUDO_END (sync_file_range)
+PSEUDO_END (__call_sync_file_range)
diff --git a/sysdeps/unix/sysv/linux/i386/sync_file_range.c b/sysdeps/unix/sysv/linux/i386/sync_file_range.c
new file mode 100644
index 0000000..c10e996
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/sync_file_range.c
@@ -0,0 +1,44 @@
+/* Selective file content synch'ing.
+ Copyright (C) 2006, 2007, 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <sysdep-cancel.h>
+
+
+extern int __call_sync_file_range (int fd, off64_t offset, off64_t nbytes,
+ unsigned int flags)
+ attribute_hidden;
+
+
+int
+sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags)
+{
+ if (SINGLE_THREAD_P)
+ return __call_sync_file_range (fd, from, to, flags);
+
+ int result;
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ result = __call_sync_file_range (fd, from, to, flags);
+
+ LIBC_CANCEL_RESET (oldtype);
+
+ return result;
+}
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 9 +++++++-
sysdeps/unix/sysv/linux/i386/Makefile | 3 ++
.../{sync_file_range.S => call_sync_file_range.S} | 6 ++--
.../fallocate.c => i386/sync_file_range.c} | 21 +++++++++----------
4 files changed, 24 insertions(+), 15 deletions(-)
rename sysdeps/unix/sysv/linux/i386/{sync_file_range.S => call_sync_file_range.S} (92%)
copy sysdeps/unix/sysv/linux/{wordsize-64/fallocate.c => i386/sync_file_range.c} (70%)
hooks/post-receive
--
GNU C Library master sources