Commit edbb91f1 authored by gregor herrmann's avatar gregor herrmann

New upstream version 4.40

parent 4a81afa4
This diff is collapsed.
This diff is collapsed.
......@@ -2,16 +2,10 @@ Revision history for IO::AIO
TODO: scandir - some dirs mostly contain subdirs - invert logic?
TODO: aio_cptree/mvtree
TODO: reduce condvar fairness: schedule hot-cache-threads first?
TODO: vmsplice? (http://kerneltrap.org/node/6505 http://lwn.net/Articles/178199/)
TODO: aio_fcntl, at least for file-locking
TODO: aio_mincore?
TODO: getxattr etc.?
TODO: F_DUPFD_CLOEXEC
TODO: getxattr, setxattr, listxattr, removexattr etc.?
TODO: emulation for splice?
TODO: eio_mmap|mlock|munmap|splice...
TODO: syncfs/sync windows:
TODO: F_SETPIPE_SZ, F_GETPIPE_SZ
TODO: posix_fallocate when flags=0
http://stackoverflow.com/questions/65170/how-to-get-name-associated-with-open-handle/5286888#5286888
http://blogs.msdn.com/b/adioltean/archive/2005/04/16/408947.aspx
......@@ -22,22 +16,46 @@ http://msdn.microsoft.com/en-us/library/windows/desktop/aa364963%28v=vs.85%29.as
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364996%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364994%28v=vs.85%29.aspx
TODO: extra socket/tcp constants &c?
TODO: getrandom, GRND_NONBLOCK, GRND_NONBLOCK
TODO: http://lwn.net/Articles/593918/ SHMEM_SET_SEALS, SHMEM_GET_SEALS, SEAL_SHRINK, SEAL_GROW, SEAL_WRITE, int memfd_create(const char *name, u64 size, u64 flags);, MFD_CLOEXEC, int fd = open("/tmp", O_RDWR | O_TMPFILE | O_EXCL, S_IRWXU);
TODO: O_TMPFILE
TODO: FALLOC_FL_COLLAPSE_RANGE
TODO: FALLOC_FL_ZERO_RANGE
TODO: renameat RENAME_EXCHANGE, RENAME_NOREPLACE, RENAME_EXCHANGE
TODO: fcntl F_GETLKP/F_SETLKP/F_SETLKPW, http://lwn.net/Articles/586904/
TODO: flink + AT_EMPTY_PATH
TODO: name_to_handle_At + open_by_handle_at = clone fds
TODO: lchown
TODO: mount/umount2/MS_* flags
TODO: rewrite rmtree et al. to support working directories (also speed them up)
TODO: maybe IO::AIO leaks fds when requests are cancelled? maybe initialise result to -1?
TODO: aio_wd should use O_PATH on linux, due to lacking O_SEARCH (http://comments.gmane.org/gmane.linux.file-systems/33611)
http://www.openwall.com/lists/musl/2013/02/23/4
TODO: aio_fcntl/ioctl test.
TODO: copy_file_range, copy_file_range
TODO: FIDEDUPERANGE, file_ioctl.c
TODO: mincore
TODO: SOCK_CLOEXEc etc.
TODO: unlinkat flags, linkat flags, statat flags
TODO: https://kernelnewbies.org/Linux_4.11
TODO: define useful rules for [[$wd, $path], $path] &c and implement them
TODO: https://github.com/coreutils/coreutils/blob/master/src/stat.c maybe IO::AIO::FSID
4.4 Tue Feb 20 07:54:12 CET 2018
- new aio_slurp request.
- add (experimental) IO::AIO::eventfd and timerfd* function.
- add (experimental) IO::AIO::get_fdlimit and IO::AIO::min_fdlimit.
- point out that aio_copy overwrites existing files.
- removed filesystem magic number table from aio_statvfs docs as
statvfs doesn't actually return this info at all (statfs does).
- add a bunch of (mostly linux-specific) constants for use in ioctls
(see aio_ioctl docs).
- treescan now has a proper manpage and useful --help output.
- new option --sync in treescan, to sync everything in a subtree.
- changed default for aio_msync flags to MSYNC_SYNC.
- document offset/length behaviour of mprotect/madvise.
- support linux's renameat2 (via aio_rename2).
- add aio_rename2, an aio_rename with flags.
- add F_DUPPFD_CLOEXEC, F_OFD_[SG]ETLKW? constants.
- add FALLOC_FL_INSERT_RANGE, FALLOC_FL_UNSHARE_RANGE.
- (libeio) use posix_close if available.
- (libeio) internal close() calls no longer disturb errno.
- add IO:AIO::FALLOC_FL_UNSHARE.
- update schmorp.h for removal of USE_SOCKETS_AS_HANDLES
and better eventfd detection.
4.34 Sun May 1 19:18:24 CEST 2016
- def0.h was not properly generated during previous release, causing
......
......@@ -4,7 +4,7 @@
"unknown"
],
"dynamic_config" : 1,
"generated_by" : "ExtUtils::MakeMaker version 7.1, CPAN::Meta::Converter version 2.150001",
"generated_by" : "ExtUtils::MakeMaker version 7.3, CPAN::Meta::Converter version 2.150010",
"license" : [
"unknown"
],
......@@ -38,5 +38,6 @@
}
},
"release_status" : "stable",
"version" : 4.34
"version" : 4.4,
"x_serialization_backend" : "JSON::PP version 2.27300"
}
......@@ -8,7 +8,7 @@ configure_requires:
Canary::Stability: '2001'
ExtUtils::MakeMaker: '6.52'
dynamic_config: 1
generated_by: 'ExtUtils::MakeMaker version 7.1, CPAN::Meta::Converter version 2.150001'
generated_by: 'ExtUtils::MakeMaker version 7.3, CPAN::Meta::Converter version 2.150010'
license: unknown
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
......@@ -20,4 +20,5 @@ no_index:
- inc
requires:
common::sense: '0'
version: 4.34
version: 4.4
x_serialization_backend: 'CPAN::Meta::YAML version 0.012'
This diff is collapsed.
......@@ -3,6 +3,101 @@
# inspired by treescan by Jamie Lokier <jamie@imbolc.ucc.ie>
# about 40% faster than the original version (on my fs and raid :)
=head1 NAME
treescan - scan directory trees, list dirs/files, stat, sync, grep
=head1 SYNOPSIS
treescan [OPTION...] [PATH...]
-q, --quiet do not print list of files/directories
-0, --print0 use null character instead of newline to separate names
-s, --stat call stat on every entry, to get stat data into cache
-d, --dirs only list dirs
-f, --files only list files
-p, --progress regularly print progress to stderr
--sync open/fsync/close every entry
-g, --grep=RE only list files that match the gibven perl RegEx
=head1 DESCRIPTION
The F<treescan> command scans directories and their contents
recursively. By default it lists all files and directories (with trailing
C</>), but it can optionally do various other things.
If no paths are given, F<treescan> will use C<.>, the current directory.
=head2 OPTIONS
=over 4
=item -q, --quiet
By default, F<treescan> prints the full paths of all directories or files
it finds. This option disables printing of filenames completely. This is
useful if you want to run F<treescan> solely for its side effects, such as
pulling C<stat> data into memory.
=item -0, --print0
Instead of using newlines, use null characters after each filename. This
is useful to avoid quoting problems when piping the result into other
programs (for example, GNU F<grep>, F<xargs> and so on all have options to
deal with this).
=item -s, --stat
Normally, F<treescan> will use heuristics to avoid most C<stat> calls,
which is what makes it so fast. This option forces it to C<stat> every file.
This is only useful for the side effect of pulling the C<stat> data into
the cache. If your disk cache is big enough, it will be filled with
file meta data after F<treescan> is done, which can speed up subsequent
commands considerably. Often, you can run F<treescan> in parallel with
other directory-scanning programs to speed them up.
=item -d, --dirs
Only lists directories, not file paths. This is useful if you quickly want
a list of directories and their subdirectories.
=item -f, --files
Only list files, not directories. This is useful if you want to operate on
all files in a hierarchy, and the directories would ony get in the way.
=item -p, --progress
Regularly print some progress information to standard error. This is
useful to get some progress information on long running tasks. Since
the progress is printed to standard error, you can pipe the output of
F<treescan> into other programs as usual.
=item --sync
The C<--sync> option can be used to make sure all the files/dirs in a tree
are sync'ed to disk. For example this could be useful after unpacking an
archive, to make sure the files hit the disk before deleting the archive
file itself.
=item -g, --grep=RE
This applies a perl regular expression (see the L<perlre> manpage) to all paths that would normally be printed
and will only print matching paths.
The regular expression uses an C</s> (single line) modifier by default, so
newlines are matched by C<.>.
=back
=head1 AUTHOR
Marc Lehmann <schmorp@schmorp.de>
http://home.schmorp.de/
=cut
use common::sense;
use Getopt::Long;
use Time::HiRes ();
......@@ -12,8 +107,8 @@ our $VERSION = $IO::AIO::VERSION;
Getopt::Long::Configure ("bundling", "no_ignore_case", "require_order", "auto_help", "auto_version");
my ($opt_silent, $opt_print0, $opt_stat, $opt_nodirs,
$opt_nofiles, $opt_grep, $opt_progress);
my ($opt_silent, $opt_print0, $opt_stat, $opt_nodirs, $opt_help,
$opt_nofiles, $opt_grep, $opt_progress, $opt_sync);
GetOptions
"quiet|q" => \$opt_silent,
......@@ -23,8 +118,19 @@ GetOptions
"files|f" => \$opt_nodirs,
"grep|g=s" => \$opt_grep,
"progress|p" => \$opt_progress,
"sync" => \$opt_sync,
"help" => \$opt_help,
or die "Usage: try $0 --help";
if ($opt_help) {
require Pod::Usage;
Pod::Usage::pod2usage (
-verbose => 1,
-exitval => 0,
);
}
@ARGV = "." unless @ARGV;
$opt_grep &&= qr{$opt_grep}s;
......@@ -59,8 +165,7 @@ sub scan {
printf STDERR "\r%d dirs (%g/s) %d files (%g/s) %d stats (%g/s) ",
$n_dirs, $n_dirs / $d,
$n_files, $n_files / $d,
$n_stats, $n_stats / $d
if $opt_progress;
$n_stats, $n_stats / $d;
}
aioreq_pri -1;
......@@ -83,6 +188,15 @@ sub scan {
};
}
if ($opt_sync) {
aio_wd $path, sub {
my $wd = shift;
aio_pathsync [$wd, $_] for @$files;
aio_pathsync $wd;
};
}
&scan ("$path$_") for @$dirs;
};
}
......
......@@ -650,6 +650,7 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
......@@ -720,6 +721,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
......@@ -972,6 +974,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
......@@ -1109,7 +1120,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir
libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
......@@ -1262,6 +1273,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
......@@ -4034,7 +4046,7 @@ int main (void)
size_t count = 2;
ssize_t res;
#if __linux
res = sendfile (fd, fd, offset, count);
res = sendfile (fd, fd, &offset, count);
#elif __FreeBSD__
res = sendfile (fd, fd, offset, count, 0, &offset, 0);
#elif __hpux
......@@ -4169,7 +4181,7 @@ else
#include <sys/prctl.h>
int main (void)
{
char name = "test123";
char *name = "test123";
int res = prctl (PR_SET_NAME, (unsigned long)name, 0, 0, 0);
}
......@@ -4189,6 +4201,41 @@ $as_echo "#define HAVE_PRCTL_SET_NAME 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for set/getrlimit" >&5
$as_echo_n "checking for set/getrlimit... " >&6; }
if ${ac_cv_rlimits+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/time.h>
#include <sys/resource.h>
int res;
int main (void)
{
struct rlimit srl;
srl.rlim_cur = srl.rlim_max = RLIM_INFINITY;
res = getrlimit (RLIMIT_NOFILE, &srl);
res = setrlimit (RLIMIT_NOFILE, &srl);
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_rlimits=yes
else
ac_cv_rlimits=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rlimits" >&5
$as_echo "$ac_cv_rlimits" >&6; }
test $ac_cv_rlimits = yes &&
$as_echo "#define HAVE_RLIMITS 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for posix_madvise" >&5
$as_echo_n "checking for posix_madvise... " >&6; }
if ${ac_cv_posix_madvise+:} false; then :
......@@ -4306,8 +4353,6 @@ test $ac_cv_linux_splice = yes &&
$as_echo "#define HAVE_LINUX_SPLICE 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pipe2" >&5
$as_echo_n "checking for pipe2... " >&6; }
if ${ac_cv_pipe2+:} false; then :
......@@ -4340,6 +4385,171 @@ test $ac_cv_pipe2 = yes &&
$as_echo "#define HAVE_PIPE2 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for eventfd" >&5
$as_echo_n "checking for eventfd... " >&6; }
if ${ac_cv_eventfd+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/eventfd.h>
int res;
int main (void)
{
res = eventfd (1, EFD_CLOEXEC | EFD_NONBLOCK);
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_eventfd=yes
else
ac_cv_eventfd=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_eventfd" >&5
$as_echo "$ac_cv_eventfd" >&6; }
test $ac_cv_eventfd = yes &&
$as_echo "#define HAVE_EVENTFD 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for timerfd" >&5
$as_echo_n "checking for timerfd... " >&6; }
if ${ac_cv_timerfd+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/timerfd.h>
int res;
int main (void)
{
struct itimerspec its;
res = timerfd_create (CLOCK_REALTIME, TFD_CLOEXEC | TFD_NONBLOCK);
res = timerfd_settime (res, TFD_TIMER_ABSTIME /*| TFD_TIMER_CANCEL_ON_SET*/, &its, 0);
res = timerfd_gettime (res, &its);
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_timerfd=yes
else
ac_cv_timerfd=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_timerfd" >&5
$as_echo "$ac_cv_timerfd" >&6; }
test $ac_cv_timerfd = yes &&
$as_echo "#define HAVE_TIMERFD 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for renameat2" >&5
$as_echo_n "checking for renameat2... " >&6; }
if ${ac_cv_renameat2+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
#include <sys/syscall.h>
#include <linux/fs.h>
int res;
int main (void)
{
res = syscall (SYS_renameat2, 0, 0, 0, 0, RENAME_EXCHANGE | RENAME_NOREPLACE);
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_renameat2=yes
else
ac_cv_renameat2=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_renameat2" >&5
$as_echo "$ac_cv_renameat2" >&6; }
test $ac_cv_renameat2 = yes &&
$as_echo "#define HAVE_RENAMEAT2 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for copy_file_range" >&5
$as_echo_n "checking for copy_file_range... " >&6; }
if ${ac_cv_copy_file_range+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
#include <sys/syscall.h>
/*#include <linux/copy.h>*/
int res;
int main (void)
{
/*res = syscall (SYS_copy_file_range, 0, 0, 0, 0, 0, COPY_FR_REFLINK | COPY_FR_DEDUP | COPY_FR_COPY);*/
res = syscall (SYS_copy_file_range, 0, 0, 0, 0, 0, 0);
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_copy_file_range=yes
else
ac_cv_copy_file_range=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_copy_file_range" >&5
$as_echo "$ac_cv_copy_file_range" >&6; }
test $ac_cv_copy_file_range = yes &&
$as_echo "#define HAVE_COPY_FILE_RANGE 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for posix_close" >&5
$as_echo_n "checking for posix_close... " >&6; }
if ${ac_cv_posix_close+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
int res;
int main (void)
{
res = posix_close (0, 0); /* we do not need any flags */
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_posix_close=yes
else
ac_cv_posix_close=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_posix_close" >&5
$as_echo "$ac_cv_posix_close" >&6; }
test $ac_cv_posix_close = yes &&
$as_echo "#define HAVE_POSIX_CLOSE 1" >>confdefs.h
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
......
......@@ -228,6 +228,174 @@
#ifndef MAP_STACK
#define MAP_STACK 0
#endif
#ifndef F_DUPFD_CLOEXEC
#define F_DUPFD_CLOEXEC 0
#endif
#ifndef F_OFD_GETLK
#define F_OFD_GETLK 0
#endif
#ifndef F_OFD_SETLK
#define F_OFD_SETLK 0
#endif
#ifndef F_OFD_GETLKW
#define F_OFD_GETLKW 0
#endif
#ifndef FIFREEZE
#define FIFREEZE 0
#endif
#ifndef FITHAW
#define FITHAW 0
#endif
#ifndef FITRIM
#define FITRIM 0
#endif
#ifndef FICLONE
#define FICLONE 0
#endif
#ifndef FICLONERANGE
#define FICLONERANGE 0
#endif
#ifndef FIDEDUPERANGE
#define FIDEDUPERANGE 0
#endif
#ifndef FS_IOC_GETFLAGS
#define FS_IOC_GETFLAGS 0
#endif
#ifndef FS_IOC_SETFLAGS
#define FS_IOC_SETFLAGS 0
#endif
#ifndef FS_IOC_GETVERSION
#define FS_IOC_GETVERSION 0
#endif
#ifndef FS_IOC_SETVERSION
#define FS_IOC_SETVERSION 0
#endif
#ifndef FS_IOC_FIEMAP
#define FS_IOC_FIEMAP 0
#endif
#ifndef FS_IOC_FSGETXATTR
#define FS_IOC_FSGETXATTR 0
#endif
#ifndef FS_IOC_FSSETXATTR
#define FS_IOC_FSSETXATTR 0
#endif
#ifndef FS_IOC_SET_ENCRYPTION_POLICY
#define FS_IOC_SET_ENCRYPTION_POLICY 0
#endif
#ifndef FS_IOC_GET_ENCRYPTION_PWSALT
#define FS_IOC_GET_ENCRYPTION_PWSALT 0
#endif
#ifndef FS_IOC_GET_ENCRYPTION_POLICY
#define FS_IOC_GET_ENCRYPTION_POLICY 0
#endif
#ifndef FS_KEY_DESCRIPTOR_SIZE
#define FS_KEY_DESCRIPTOR_SIZE 0
#endif
#ifndef FS_SECRM_FL
#define FS_SECRM_FL 0
#endif
#ifndef FS_UNRM_FL
#define FS_UNRM_FL 0
#endif
#ifndef FS_COMPR_FL
#define FS_COMPR_FL 0
#endif
#ifndef FS_SYNC_FL
#define FS_SYNC_FL 0
#endif
#ifndef FS_IMMUTABLE_FL
#define FS_IMMUTABLE_FL 0
#endif
#ifndef FS_APPEND_FL
#define FS_APPEND_FL 0
#endif
#ifndef FS_NODUMP_FL
#define FS_NODUMP_FL 0
#endif
#ifndef FS_NOATIME_FL
#define FS_NOATIME_FL 0
#endif
#ifndef FS_DIRTY_FL
#define FS_DIRTY_FL 0
#endif
#ifndef FS_COMPRBLK_FL
#define FS_COMPRBLK_FL 0
#endif
#ifndef FS_NOCOMP_FL
#define FS_NOCOMP_FL 0
#endif
#ifndef FS_ENCRYPT_FL
#define FS_ENCRYPT_FL 0
#endif
#ifndef FS_BTREE_FL
#define FS_BTREE_FL 0
#endif
#ifndef FS_INDEX_FL
#define FS_INDEX_FL 0
#endif
#ifndef FS_JOURNAL_DATA_FL
#define FS_JOURNAL_DATA_FL 0
#endif
#ifndef FS_NOTAIL_FL
#define FS_NOTAIL_FL 0
#endif
#ifndef FS_DIRSYNC_FL
#define FS_DIRSYNC_FL 0
#endif
#ifndef FS_TOPDIR_FL
#define FS_TOPDIR_FL 0
#endif
#ifndef FS_FL_USER_MODIFIABLE
#define FS_FL_USER_MODIFIABLE 0
#endif
#ifndef FS_XFLAG_REALTIME
#define FS_XFLAG_REALTIME 0
#endif
#ifndef FS_XFLAG_PREALLOC
#define FS_XFLAG_PREALLOC 0
#endif
#ifndef FS_XFLAG_IMMUTABLE
#define FS_XFLAG_IMMUTABLE 0
#endif
#ifndef FS_XFLAG_APPEND
#define FS_XFLAG_APPEND 0
#endif
#ifndef FS_XFLAG_SYNC
#define FS_XFLAG_SYNC 0
#endif
#ifndef FS_XFLAG_NOATIME
#define FS_XFLAG_NOATIME 0
#endif
#ifndef FS_XFLAG_NODUMP
#define FS_XFLAG_NODUMP 0
#endif
#ifndef FS_XFLAG_RTINHERIT
#define FS_XFLAG_RTINHERIT 0
#endif
#ifndef FS_XFLAG_PROJINHERIT
#define FS_XFLAG_PROJINHERIT 0
#endif
#ifndef FS_XFLAG_NOSYMLINKS
#define FS_XFLAG_NOSYMLINKS 0
#endif
#ifndef FS_XFLAG_EXTSIZE
#define FS_XFLAG_EXTSIZE 0
#endif
#ifndef FS_XFLAG_EXTSZINHERIT
#define FS_XFLAG_EXTSZINHERIT 0
#endif
#ifndef FS_XFLAG_NODEFRAG
#define FS_XFLAG_NODEFRAG 0
#endif
#ifndef FS_XFLAG_FILESTREAM
#define FS_XFLAG_FILESTREAM 0
#endif
#ifndef FS_XFLAG_DAX
#define FS_XFLAG_DAX 0
#endif
#ifndef FS_XFLAG_HASATTR
#define FS_XFLAG_HASATTR 0
#endif
#ifndef FIEMAP_FLAG_SYNC
#define FIEMAP_FLAG_SYNC 0
#endif
......@@ -282,3 +450,39 @@
#ifndef SPLICE_F_GIFT
#define SPLICE_F_GIFT 0
#endif
#ifndef EFD_CLOEXEC
#define EFD_CLOEXEC 0
#endif
#ifndef EFD_NONBLOCK
#define EFD_NONBLOCK 0
#endif
#ifndef EFD_SEMAPHORE
#define EFD_SEMAPHORE 0
#endif
#ifndef CLOCK_REALTIME
#define CLOCK_REALTIME 0
#endif
#ifndef CLOCK_MONOTONIC
#define CLOCK_MONOTONIC 0
#endif
#ifndef CLOCK_BOOTTIME
#define CLOCK_BOOTTIME 0
#endif
#ifndef CLOCK_REALTIME_ALARM
#define CLOCK_REALTIME_ALARM 0
#endif
#ifndef CLOCK_BOOTTIME_ALARM
#define CLOCK_BOOTTIME_ALARM 0
#endif
#ifndef TFD_NONBLOCK
#define TFD_NONBLOCK 0
#endif
#ifndef TFD_CLOEXEC
#define TFD_CLOEXEC 0
#endif
#ifndef TFD_TIMER_ABSTIME
#define TFD_TIMER_ABSTIME 0
#endif
#ifndef TFD_TIMER_CANCEL_ON_SET
#define TFD_TIMER_CANCEL_ON_SET 0
#endif
/* config.h.in. Generated from configure.ac by autoheader. */
/* libeio/config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* copy_file_range(2) is available */
#undef HAVE_COPY_FILE_RANGE
/* eventfd(2) is available */
#undef HAVE_EVENTFD