~ubuntu-branches/ubuntu/trusty/eglibc/trusty

« back to all changes in this revision

Viewing changes to ports/sysdeps/unix/sysv/linux/alpha/fdatasync.c

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2013-01-10 18:39:35 UTC
  • mfrom: (1.5.2) (4.4.24 experimental)
  • Revision ID: package-import@ubuntu.com-20130110183935-afsgfxkmg7wk5eaj
Tags: 2.17-0ubuntu1
* Merge with Debian, bringing in a new upstream and many small fixes:
  - patches/any/cvs-malloc-deadlock.diff: Dropped, merged upstream.
  - patches/ubuntu/lddebug-scopes.diff: Rebase for upstream changes.
  - patches/ubuntu/local-CVE-2012-3406.diff: Rebased against upstream.
  - patches/ubuntu/no-asm-mtune-i686.diff: Fixed in recent binutils.
* This upstream merge fixes a nasty hang in pulseaudio (LP: #1085342)
* Bump MIN_KERNEL_SUPPORTED to 2.6.32 on ARM, now that we no longer
  have to support shonky 2.6.31 kernels on imx51 babbage builders.
* Drop patches/ubuntu/local-disable-nscd-host-caching.diff, as these
  issues were apparently resolved upstream a while ago (LP: #613662)
* Fix the compiled-in bug URL to point to launchpad.net, not Debian.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* fdatasync -- synchronize at least the data part of a file with
 
2
   the underlying media. Linux version.
 
3
 
 
4
   Copyright (C) 2007-2012 Free Software Foundation, Inc.
 
5
   This file is part of the GNU C Library.
 
6
 
 
7
   The GNU C Library is free software; you can redistribute it and/or
 
8
   modify it under the terms of the GNU Lesser General Public
 
9
   License as published by the Free Software Foundation; either
 
10
   version 2.1 of the License, or (at your option) any later version.
 
11
 
 
12
   The GNU C Library is distributed in the hope that it will be useful,
 
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
15
   Lesser General Public License for more details.
 
16
 
 
17
   You should have received a copy of the GNU Lesser General Public
 
18
   License along with the GNU C Library.  If not, see
 
19
   <http://www.gnu.org/licenses/>.  */
 
20
 
 
21
#include <errno.h>
 
22
#include <unistd.h>
 
23
 
 
24
#include <sysdep-cancel.h>
 
25
#include <sys/syscall.h>
 
26
#include <bp-checks.h>
 
27
 
 
28
#include <kernel-features.h>
 
29
 
 
30
static int
 
31
do_fdatasync (int fd)
 
32
{
 
33
#ifdef __ASSUME_FDATASYNC
 
34
  return INLINE_SYSCALL (fdatasync, 1, fd);
 
35
#elif defined __NR_fdatasync
 
36
  static int __have_no_fdatasync;
 
37
 
 
38
  if (!__builtin_expect (__have_no_fdatasync, 0))
 
39
    {
 
40
      int result = INLINE_SYSCALL (fdatasync, 1, fd);
 
41
      if (__builtin_expect (result, 0) != -1 || errno != ENOSYS)
 
42
        return result;
 
43
 
 
44
      __have_no_fdatasync = 1;
 
45
    }
 
46
#endif
 
47
  return INLINE_SYSCALL (fsync, 1, fd);
 
48
}
 
49
 
 
50
int
 
51
__fdatasync (int fd)
 
52
{
 
53
  if (SINGLE_THREAD_P)
 
54
    return do_fdatasync (fd);
 
55
 
 
56
  int oldtype = LIBC_CANCEL_ASYNC ();
 
57
 
 
58
  int result = do_fdatasync (fd);
 
59
 
 
60
  LIBC_CANCEL_RESET (oldtype);
 
61
 
 
62
  return result;
 
63
}
 
64
 
 
65
weak_alias (__fdatasync, fdatasync)