summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2011-04-01 13:08:28 -0400
committerUlrich Drepper <drepper@gmail.com>2011-04-01 13:08:28 -0400
commit81a5726bd231f21a3621007bde58eac9a0f82885 (patch)
tree11b1d9a529d9acae47e516a0e8610f182eedab5f
parent00e5419f8ed1b927814ba7f84ec8f4b021efe4fe (diff)
Add syncfs syscall.
-rw-r--r--ChangeLog7
-rw-r--r--misc/Makefile4
-rw-r--r--misc/Versions3
-rw-r--r--misc/syncfs.c33
-rw-r--r--posix/unistd.h7
-rw-r--r--sysdeps/unix/syscalls.list1
6 files changed, 53 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index e26298a167..c4cf88279d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-03-30 Andreas Schwab <schwab@redhat.com>
+
+ * misc/syncfs.c: New file.
+ * misc/Makefile (routines): Add syncfs.
+ * posix/unistd.h: Declare syncfs.
+ * sysdeps/unix/syscalls.list: Add syncfs.
+
2011-04-01 Andreas Schwab <schwab@redhat.com>
* sysdeps/unix/sysv/linux/Versions: Rename open_by_handle to
diff --git a/misc/Makefile b/misc/Makefile
index ee6936180b..52b13daa72 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2006, 2007, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1991-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
@@ -41,7 +41,7 @@ routines := brk sbrk sstk ioctl \
getdtsz \
gethostname sethostname getdomain setdomain \
select pselect \
- acct chroot fsync sync fdatasync reboot \
+ acct chroot fsync sync fdatasync syncfs reboot \
gethostid sethostid \
revoke vhangup \
swapon swapoff mktemp mkstemp mkstemp64 mkdtemp \
diff --git a/misc/Versions b/misc/Versions
index 3ffe3d138d..3a31c7fe62 100644
--- a/misc/Versions
+++ b/misc/Versions
@@ -143,4 +143,7 @@ libc {
GLIBC_2.11 {
mkstemps; mkstemps64; mkostemps; mkostemps64;
}
+ GLIBC_2.14 {
+ syncfs;
+ }
}
diff --git a/misc/syncfs.c b/misc/syncfs.c
new file mode 100644
index 0000000000..bd7328cf84
--- /dev/null
+++ b/misc/syncfs.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 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 <unistd.h>
+
+/* Make all changes done to all files on the file system associated
+ with FD actually appear on disk. */
+int
+syncfs (int fd)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+
+
+stub_warning (syncfs)
+#include <stub-tag.h>
diff --git a/posix/unistd.h b/posix/unistd.h
index e73673121e..08a3d47463 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -977,6 +977,13 @@ extern int fsync (int __fd);
#endif /* Use BSD || X/Open || Unix98. */
+#ifdef __USE_GNU
+/* Make all changes done to all files on the file system associated
+ with FD actually appear on disk. */
+extern int syncfs (int __fd) __THROW;
+#endif
+
+
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
/* Return identifier for the current host. */
diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list
index 04ed63c4d7..ad49170780 100644
--- a/sysdeps/unix/syscalls.list
+++ b/sysdeps/unix/syscalls.list
@@ -55,6 +55,7 @@ swapoff - swapoff i:s swapoff
swapon - swapon i:s swapon
symlink - symlink i:ss __symlink symlink
sync - sync i: sync
+syncfs - syncfs i:i syncfs
sys_fstat fxstat fstat i:ip __syscall_fstat
sys_mknod xmknod mknod i:sii __syscall_mknod
sys_stat xstat stat i:sp __syscall_stat