diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-04-01 11:15:08 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-04-01 11:15:08 -0400 |
commit | 748876bf1c45cd10f998f8578c434156eae53b7e (patch) | |
tree | 2fcf11637d6246f8e4783a4ad6a4c9aff9ca972f /sysdeps/unix/sysv/linux/wordsize-64 | |
parent | 6e63d5e1aebc659a95223cf8862a7b42c67dbb1c (diff) | |
download | glibc-748876bf1c45cd10f998f8578c434156eae53b7e.zip glibc-748876bf1c45cd10f998f8578c434156eae53b7e.tar.gz glibc-748876bf1c45cd10f998f8578c434156eae53b7e.tar.bz2 |
Really implement fallocate{,64} and sync_file_range as cancellation points.
Diffstat (limited to 'sysdeps/unix/sysv/linux/wordsize-64')
-rw-r--r-- | sysdeps/unix/sysv/linux/wordsize-64/fallocate.c | 16 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/wordsize-64/syscalls.list | 2 |
2 files changed, 14 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c b/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c index 3e8954f..fc08b7b 100644 --- a/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c +++ b/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007, 2009 Free Software Foundation, Inc. +/* Copyright (C) 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 @@ -18,7 +18,7 @@ #include <errno.h> #include <fcntl.h> -#include <sysdep.h> +#include <sysdep-cancel.h> /* Reserve storage for the data of the file associated with FD. */ @@ -26,7 +26,17 @@ int fallocate (int fd, int mode, __off_t offset, __off_t len) { #ifdef __NR_fallocate - return INLINE_SYSCALL (fallocate, 4, fd, mode, offset, len); + if (SINGLE_THREAD_P) + return INLINE_SYSCALL (fallocate, 4, fd, mode, offset, len); + + int result; + int oldtype = LIBC_CANCEL_ASYNC (); + + result = INLINE_SYSCALL (fallocate, 4, fd, mode, offset, len); + + LIBC_CANCEL_RESET (oldtype); + + return result; #else __set_errno (ENOSYS); return -1; diff --git a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list index fda3db1..74732ab 100644 --- a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list +++ b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list @@ -14,7 +14,7 @@ getrlimit - getrlimit i:ip __getrlimit getrlimit getrlimit64 setrlimit - setrlimit i:ip __setrlimit setrlimit setrlimit64 readahead - readahead i:iii __readahead readahead sendfile - sendfile i:iipi sendfile sendfile64 -sync_file_range - sync_file_range i:iiii sync_file_range +sync_file_range - sync_file_range Ci:iiii sync_file_range creat - creat Ci:si __libc_creat creat creat64 open - open Ci:siv __libc_open __open open __open64 open64 prlimit EXTRA prlimit64 i:iipp prlimit prlimit64 |