Implement decoding of fallocate FALLOC_FL_* flags

* xlat/falloc_flags.in: New file.
* configure.ac (AC_CHECK_HEADERS): Add linux/falloc.h.
* fallocate.c [HAVE_LINUX_FALLOC_H]: Include <linux/falloc.h>.
Include xlat/falloc_flags.h.
(sys_fallocate): Decode flags.
This commit is contained in:
Дмитрий Левин 2014-12-11 19:21:54 +00:00
parent 19b50da101
commit 52572b6fdd
3 changed files with 26 additions and 4 deletions

View File

@ -232,6 +232,7 @@ AC_CHECK_HEADERS(m4_normalize([
elf.h
inttypes.h
ioctls.h
linux/falloc.h
linux/perf_event.h
linux/ptrace.h
linux/utsname.h

View File

@ -1,14 +1,30 @@
#include "defs.h"
#ifdef HAVE_LINUX_FALLOC_H
# include <linux/falloc.h>
#endif
#include "xlat/falloc_flags.h"
int
sys_fallocate(struct tcb *tcp)
{
if (entering(tcp)) {
int argn;
printfd(tcp, tcp->u_arg[0]); /* fd */
tprintf(", %#lo, ", tcp->u_arg[1]); /* mode */
argn = printllval(tcp, "%llu, ", 2); /* offset */
printllval(tcp, "%llu", argn); /* len */
/* fd */
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
/* mode */
printflags(falloc_flags, tcp->u_arg[1], "FALLOC_FL_???");
tprints(", ");
/* offset */
argn = printllval(tcp, "%llu, ", 2);
/* len */
printllval(tcp, "%llu", argn);
}
return 0;
}

5
xlat/falloc_flags.in Normal file
View File

@ -0,0 +1,5 @@
FALLOC_FL_KEEP_SIZE
FALLOC_FL_PUNCH_HOLE
FALLOC_FL_NO_HIDE_STALE
FALLOC_FL_COLLAPSE_RANGE
FALLOC_FL_ZERO_RANGE