On Sat, Apr 1, 2017 at 10:35 AM, Abhishek Tiwari
<erabhishektiwar...@gmail.com> wrote:
> On Sat, Apr 1, 2017 at 1:51 AM, Dmitry V. Levin <l...@altlinux.org> wrote:
>> On Sat, Apr 01, 2017 at 01:02:33AM +0530, Abhishek Tiwari wrote:
>>> while grouping I found that osf_statfs has following entries
>>>
>>>   linux/alpha/syscallent.h:188:[160] = { 3,   TF|TSF,
>>> SEN(osf_statfs),        "osf_statfs"        },
>>>   linux/alpha/syscallent.h:233:[227] = { 3,   TF|TSF,
>>> SEN(osf_statfs),        "osf_statfs64"      },
>>>
>>> Should the second entry be
>>>  linux/alpha/syscallent.h:233:[227] = { 3,   TF|TSF,
>>> SEN(osf_statfs64),        "osf_statfs64"      },
>>>
>>> and not
>>> linux/alpha/syscallent.h:233:[227] = { 3,   TF|TSF,
>>> SEN(osf_statfs),        "osf_statfs64"      },
>>
>> No, I don't think so.  There is a single parser for both syscalls:
>>
>> $ grep osf_statfs alpha.c
>> SYS_FUNC(osf_statfs)
>>
>> This is a dumb parser, it doesn't decode neither struct osf_statfs
>> nor struct osf_statfs64.
>>
>>> and then grouped under statfs64 ?
>>>
>>> If entry is correct what group should I put for this file statfs or 
>>> statfs64 ?
>>
>> Why do you want to separate statfs and statfs64?
>
> For commit message, you suggested to rewrite ordering of file according to
> syscall it contains i.e. statfs, statfs64 and statvfs
>
> From previous reply
>
>>>"In some of these files, there is just statfs, in some others it's just
>>>statfs64, in a few more you change both statfs and statfs64, and statvfs
>>>is a very rare beast found only in one file.
>>>
>>>Let's reorder the list of changed syscallent files into these groups so
>>>the changes being made would have more correct descriptions."

Please review attached patch


>>
>> --
>> ldv
>>
>> ------------------------------------------------------------------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> _______________________________________________
>> Strace-devel mailing list
>> Strace-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/strace-devel



-- 
Abhishek Tiwari
M.Tech (CS),
IIT Kharagpur.
From 87ebbc9191c3b9c878674646d463ae7dcc6147a2 Mon Sep 17 00:00:00 2001
From: Abhishek Tiwari <erabhishektiwar...@gmail.com>
Date: Wed, 29 Mar 2017 14:33:34 +0530
Subject: [PATCH v8] Implement -e trace=%statfs option to trace statfs,
 statfs64 and statvfs syscalls

linux/*/syscallent* part is modified automatically by:

	git grep -Fl 'stat' linux/*/syscallent* | xargs sed -i \
	  's/TF\(,[[:space:]]*SEN.*\((\|_\)statv\?fs\)\)/TF|TSF\1/'

* sysent.h (TRACE_STATFS): New definition.
* syscall.c: Alias TSF to TRACE_STATFS around syscallent.h inclusion.
* linux/64/syscallent.h: Add TSF flag to trace statfs syscall.
* linux/aarch64/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/32/syscallent.h: Add TSF flag to trace statfs64 sycall.
* linux/mips/syscallent-compat.h: Add TSF flag to trace statfs and
statvfs syscalls.
* linux/alpha/syscallent.h: Add TSF flag to trace statfs and statfs64
syscalls.
* linux/arm/syscallent.h: Likewise.
* linux/avr32/syscallent.h: Likewise.
* linux/bfin/syscallent.h: Likewise.
* linux/crisv10/syscallent.h: Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/xtensa/syscallent.h: Likewise.
* qualify.c (lookup_class): Add SCHED_STATFS for "%statfs"
* strace.1 (.SS Filtering): Add information about %statfs syscall class.
* tests/Makefile.am (DECODER_TESTS): Add trace_statfs.test.
* tests/ksysent.c: Define TSF to 0.
* tests/nsyscalls.c: Likewise.
* tests/trace_statfs.test: New test.
* NEWS: Mention this change.
---
 NEWS                           |  2 ++
 linux/32/syscallent.h          |  2 +-
 linux/64/syscallent.h          |  2 +-
 linux/aarch64/syscallent.h     |  2 +-
 linux/alpha/syscallent.h       |  6 ++---
 linux/arm/syscallent.h         |  4 +--
 linux/avr32/syscallent.h       |  4 +--
 linux/bfin/syscallent.h        |  4 +--
 linux/crisv10/syscallent.h     |  4 +--
 linux/hppa/syscallent.h        |  4 +--
 linux/i386/syscallent.h        |  4 +--
 linux/ia64/syscallent.h        |  4 +--
 linux/m68k/syscallent.h        |  4 +--
 linux/microblaze/syscallent.h  |  4 +--
 linux/mips/syscallent-compat.h | 12 ++++-----
 linux/mips/syscallent-n32.h    |  4 +--
 linux/mips/syscallent-n64.h    |  2 +-
 linux/mips/syscallent-o32.h    |  4 +--
 linux/powerpc/syscallent.h     |  4 +--
 linux/powerpc64/syscallent.h   |  4 +--
 linux/s390/syscallent.h        |  4 +--
 linux/s390x/syscallent.h       |  4 +--
 linux/sh/syscallent.h          |  4 +--
 linux/sh64/syscallent.h        |  4 +--
 linux/sparc/syscallent.h       |  4 +--
 linux/sparc64/syscallent.h     |  4 +--
 linux/x32/syscallent.h         |  2 +-
 linux/x86_64/syscallent.h      |  2 +-
 linux/xtensa/syscallent.h      |  4 +--
 qualify.c                      |  1 +
 strace.1                       |  3 +++
 syscall.c                      |  2 ++
 sysent.h                       |  1 +
 tests/Makefile.am              |  1 +
 tests/ksysent.c                |  1 +
 tests/nsyscalls.c              |  1 +
 tests/trace_statfs.test        | 58 ++++++++++++++++++++++++++++++++++++++++++
 37 files changed, 125 insertions(+), 55 deletions(-)
 create mode 100755 tests/trace_statfs.test

diff --git a/NEWS b/NEWS
index 5e0941f..8d09f11 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,8 @@ Noteworthy changes in release ?.?? (????-??-??)
     architectures.
   * Implemented decoding of statx syscall.
   * Updated lists of ioctl commands from Linux 4.11.
+  * Added -e trace=%statfs option for tracing statfs, statfs64 and statvfs
+    syscalls.
 
 * Bug fixes
   * Fixed decoding of flags argument of preadv2 and pwritev2 syscalls on x32.
diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h
index a8f9510..7beef25 100644
--- a/linux/32/syscallent.h
+++ b/linux/32/syscallent.h
@@ -44,7 +44,7 @@
 [ 40] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 41] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [ 42] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		},
-[ 43] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[ 43] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [ 44] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [ 45] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [ 46] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h
index b5a09d4..e377431 100644
--- a/linux/64/syscallent.h
+++ b/linux/64/syscallent.h
@@ -41,7 +41,7 @@
 [ 40] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 41] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [ 42] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		},
-[ 43] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 43] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [ 44] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [ 45] = { 2,	TF,		SEN(truncate),			"truncate"		},
 [ 46] = { 2,	TD,		SEN(ftruncate),			"ftruncate"		},
diff --git a/linux/aarch64/syscallent.h b/linux/aarch64/syscallent.h
index 6b23f8c..e760fdc 100644
--- a/linux/aarch64/syscallent.h
+++ b/linux/aarch64/syscallent.h
@@ -45,7 +45,7 @@
 [1053] = { 4,	TD,		SEN(fadvise64),		"fadvise64"	},
 [1054] = { 4,	TD|TF,		SEN(newfstatat),	"newfstatat"	},
 [1055] = { 2,	TD,		SEN(fstatfs),		"fstatfs"	},
-[1056] = { 2,	TF,		SEN(statfs),		"statfs"	},
+[1056] = { 2,	TF|TSF,		SEN(statfs),		"statfs"	},
 [1057] = { 3,	TD,		SEN(lseek),		"lseek"		},
 [1058] = { 6,	TD|TM|SI,	SEN(mmap),		"mmap"		},
 [1059] = { 1,	0,		SEN(alarm),		"alarm"		},
diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h
index e1b6933..8a48d4a 100644
--- a/linux/alpha/syscallent.h
+++ b/linux/alpha/syscallent.h
@@ -185,7 +185,7 @@
 [157] = { 5,	0,		SEN(printargs),			"osf_sigwaitprim"	}, /* not implemented */
 [158] = { 5,	0,		SEN(printargs),			"osf_nfssvc"		}, /* not implemented */
 [159] = { 4,	0,		SEN(printargs),			"osf_getdirentries"	},
-[160] = { 3,	TF,		SEN(osf_statfs),		"osf_statfs"		},
+[160] = { 3,	TF|TSF,		SEN(osf_statfs),		"osf_statfs"		},
 [161] = { 3,	TD,		SEN(osf_fstatfs),		"osf_fstatfs"		},
 [162] = { },
 [163] = { 5,	0,		SEN(printargs),			"osf_asynch_daemon"	}, /* not implemented */
@@ -230,7 +230,7 @@
 [224] = { 2,	TF,		SEN(printargs),			"osf_stat"		},
 [225] = { 2,	TF,		SEN(printargs),			"osf_lstat"		},
 [226] = { 2,	TD,		SEN(printargs),			"osf_fstat"		},
-[227] = { 3,	TF,		SEN(osf_statfs),		"osf_statfs64"		},
+[227] = { 3,	TF|TSF,		SEN(osf_statfs),		"osf_statfs64"		},
 [228] = { 3,	TD,		SEN(osf_fstatfs),		"osf_fstatfs64"		},
 [229 ... 232] = { },
 [233] = { 1,	0,		SEN(getpgid),			"getpgid"		},
@@ -291,7 +291,7 @@
 [325] = { 1,	NF,		SEN(setfsuid),			"setfsuid"		},
 [326] = { 1,	NF,		SEN(setfsgid),			"setfsgid"		},
 [327] = { 2,	0,		SEN(ustat),			"ustat"			},
-[328] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[328] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [329] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [330] = { 2,	TSC,		SEN(sched_setparam),		"sched_setparam"	},
 [331] = { 2,	TSC,		SEN(sched_getparam),		"sched_getparam"	},
diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h
index ed9ec9a..ef11d5f 100644
--- a/linux/arm/syscallent.h
+++ b/linux/arm/syscallent.h
@@ -125,7 +125,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -290,7 +290,7 @@
 [263] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [264] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [265] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[266] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[266] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [267] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [268] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [269] = { 2,	TF,		SEN(utimes),			"utimes"		},
diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h
index 7f50934..6f49054 100644
--- a/linux/avr32/syscallent.h
+++ b/linux/avr32/syscallent.h
@@ -124,7 +124,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	TP,		SEN(wait4),			"wait4"			},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 0,	0,		SEN(vhangup),			"vhangup"		},
 [102] = { 2,	TS,		SEN(sigaltstack),		"sigaltstack"		},
@@ -244,7 +244,7 @@
 [216] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [217] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [218] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[219] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[219] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [220] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [221] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [222] = { },
diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h
index 800b943..a70dd8b 100644
--- a/linux/bfin/syscallent.h
+++ b/linux/bfin/syscallent.h
@@ -125,7 +125,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -294,7 +294,7 @@
 [266] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [267] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [268] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[269] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[269] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [270] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [271] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [272] = { 2,	TF,		SEN(utimes),			"utimes"		},
diff --git a/linux/crisv10/syscallent.h b/linux/crisv10/syscallent.h
index 96fb6bd..695b4d0 100644
--- a/linux/crisv10/syscallent.h
+++ b/linux/crisv10/syscallent.h
@@ -97,7 +97,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -262,7 +262,7 @@
 [265] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [266] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [267] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[268] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[268] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [269] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [270] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [271] = { 2,	TF,		SEN(utimes),			"utimes"		},
diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h
index f59ea57..9ff420c 100644
--- a/linux/hppa/syscallent.h
+++ b/linux/hppa/syscallent.h
@@ -101,7 +101,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	TN,		SEN(recv),			"recv"			},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 2,	TF,		SEN(stat64),			"stat64"		},
 [102] = { },
@@ -300,7 +300,7 @@
 [295] = { 6,	TM,		SEN(move_pages),		"move_pages"		},
 [296] = { 3,	0,		SEN(getcpu),			"getcpu"		},
 [297] = { 6,	TD,		SEN(epoll_pwait),		"epoll_pwait"		},
-[298] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[298] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [299] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [300] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [301] = { 4,	TD|TF,		SEN(utimensat),			"utimensat"		},
diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h
index 84c5bde..5fbf4cc 100644
--- a/linux/i386/syscallent.h
+++ b/linux/i386/syscallent.h
@@ -125,7 +125,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -293,7 +293,7 @@
 [265] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [266] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [267] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[268] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[268] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [269] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [270] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [271] = { 2,	TF,		SEN(utimes),			"utimes"		},
diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h
index 47b71d6..96e5fd3 100644
--- a/linux/ia64/syscallent.h
+++ b/linux/ia64/syscallent.h
@@ -120,7 +120,7 @@
 [1100] = { 3,	TD,		SEN(fchown),			"fchown"		},
 [1101] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [1102] = { 3,	0,		SEN(setpriority),		"setpriority"		},
-[1103] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[1103] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [1104] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [1105] = { 0,	NF,		SEN(gettid),			"gettid"		},
 [1106] = { 3,	TI,		SEN(semget),			"semget"		},
@@ -275,7 +275,7 @@
 [1255] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [1256] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
 [1257] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
-[1258] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[1258] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [1259] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [1260] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [1261] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h
index 8e7dd97..42c1d1a 100644
--- a/linux/m68k/syscallent.h
+++ b/linux/m68k/syscallent.h
@@ -125,7 +125,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -288,7 +288,7 @@
 [260] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [261] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [262] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[263] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[263] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [264] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [265] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [266] = { 2,	TF,		SEN(utimes),			"utimes"		},
diff --git a/linux/microblaze/syscallent.h b/linux/microblaze/syscallent.h
index 2a59eb3..cb5bd78 100644
--- a/linux/microblaze/syscallent.h
+++ b/linux/microblaze/syscallent.h
@@ -125,7 +125,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -293,7 +293,7 @@
 [265] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [266] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [267] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[268] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[268] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [269] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [270] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [271] = { 2,	TF,		SEN(utimes),			"utimes"		},
diff --git a/linux/mips/syscallent-compat.h b/linux/mips/syscallent-compat.h
index 5d44918..c30b00c 100644
--- a/linux/mips/syscallent-compat.h
+++ b/linux/mips/syscallent-compat.h
@@ -33,7 +33,7 @@
 [  32] = { 0,	0,	SEN(printargs),		"svr4_gtty"	},
 [  33] = { 0,	0,	SEN(printargs),		"svr4_access"	},
 [  34] = { 0,	0,	SEN(printargs),		"svr4_nice"	},
-[  35] = { 0,	TF,	SEN(printargs),		"svr4_statfs"	},
+[  35] = { 0,	TF|TSF,	SEN(printargs),		"svr4_statfs"	},
 [  36] = { 0,	0,	SEN(printargs),		"svr4_sync"	},
 [  37] = { 0,	0,	SEN(printargs),		"svr4_kill"	},
 [  38] = { 0,	TD,	SEN(printargs),		"svr4_fstatfs"	},
@@ -96,7 +96,7 @@
 [ 100] = { 0,	0,	SEN(printargs),		"svr4_setcontext"	},
 [ 101] = { 0,	0,	SEN(printargs),		"svr4_evsys"	},
 [ 102] = { 0,	0,	SEN(printargs),		"svr4_evtrapret"	},
-[ 103] = { 0,	TF,	SEN(printargs),		"svr4_statvfs"	},
+[ 103] = { 0,	TF|TSF,	SEN(printargs),		"svr4_statvfs"	},
 [ 104] = { 0,	TD,	SEN(printargs),		"svr4_fstatvfs"	},
 [ 105] = { },
 [ 106] = { 0,	0,	SEN(printargs),		"svr4_nfssys"	},
@@ -184,7 +184,7 @@
 [1032] = { 0,	0,	SEN(printargs),		"sysv_gtty"	},
 [1033] = { 0,	0,	SEN(printargs),		"sysv_access"	},
 [1034] = { 0,	0,	SEN(printargs),		"sysv_nice"	},
-[1035] = { 0,	TF,	SEN(printargs),		"sysv_statfs"	},
+[1035] = { 0,	TF|TSF,	SEN(printargs),		"sysv_statfs"	},
 [1036] = { 0,	0,	SEN(printargs),		"sysv_sync"	},
 [1037] = { 0,	0,	SEN(printargs),		"sysv_kill"	},
 [1038] = { 0,	TD,	SEN(printargs),		"sysv_fstatfs"	},
@@ -318,7 +318,7 @@
 [1171] = { 0,	0,	SEN(printargs),		"sysv_sigstack"	},
 [1172] = { 0,	0,	SEN(printargs),		"sysv_sigaltstack"	},
 [1173] = { 0,	0,	SEN(printargs),		"sysv_sigsendset"	},
-[1174] = { 0,	TF,	SEN(printargs),		"sysv_statvfs"	},
+[1174] = { 0,	TF|TSF,	SEN(printargs),		"sysv_statvfs"	},
 [1175] = { 0,	TD,	SEN(printargs),		"sysv_fstatvfs"	},
 [1176] = { 0,	0,	SEN(printargs),		"sysv_getpmsg"	},
 [1177] = { 0,	0,	SEN(printargs),		"sysv_putpmsg"	},
@@ -494,7 +494,7 @@
 [2157] = { 0,	0,	SEN(printargs),		"bsd43_nfs_mount"	},
 [2158] = { 0,	0,	SEN(printargs),		"bsd43_nfs_svc"	},
 [2159] = { 0,	0,	SEN(printargs),		"bsd43_getdirentries"	},
-[2160] = { 0,	TF,	SEN(printargs),		"bsd43_statfs"	},
+[2160] = { 0,	TF|TSF,	SEN(printargs),		"bsd43_statfs"	},
 [2161] = { 0,	TD,	SEN(printargs),		"bsd43_fstatfs"	},
 [2162] = { 0,	0,	SEN(printargs),		"bsd43_unmount"	},
 [2163] = { 0,	0,	SEN(printargs),		"bsd43_async_daemon"	},
@@ -562,7 +562,7 @@
 [3032] = { 0,	0,	SEN(printargs),		"posix_gtty"	},
 [3033] = { 0,	0,	SEN(printargs),		"posix_access"	},
 [3034] = { 0,	0,	SEN(printargs),		"posix_nice"	},
-[3035] = { 0,	TF,	SEN(printargs),		"posix_statfs"	},
+[3035] = { 0,	TF|TSF,	SEN(printargs),		"posix_statfs"	},
 [3036] = { 0,	0,	SEN(printargs),		"posix_sync"	},
 [3037] = { 0,	0,	SEN(printargs),		"posix_kill"	},
 [3038] = { 0,	TD,	SEN(printargs),		"posix_fstatfs"	},
diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h
index 052af4f..dd6429b 100644
--- a/linux/mips/syscallent-n32.h
+++ b/linux/mips/syscallent-n32.h
@@ -134,7 +134,7 @@
 [6131] = { 3,	TF,		SEN(mknod),			"mknod"			},
 [6132] = { 1,	NF,		SEN(personality),		"personality"		},
 [6133] = { 2,	0,		SEN(ustat),			"ustat"			},
-[6134] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[6134] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [6135] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [6136] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [6137] = { 2,	0,		SEN(getpriority),		"getpriority"		},
@@ -217,7 +217,7 @@
 [6214] = { 0,	0,		SEN(restart_syscall),		"restart_syscall"	},
 [6215] = { 4,	TI,		SEN(semtimedop),		"semtimedop"		},
 [6216] = { 4,	TD,		SEN(fadvise64_64),		"fadvise64"		},
-[6217] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[6217] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [6218] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [6219] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile64"		},
 [6220] = { 3,	0,		SEN(timer_create),		"timer_create"		},
diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h
index fdd778b..d5065ad 100644
--- a/linux/mips/syscallent-n64.h
+++ b/linux/mips/syscallent-n64.h
@@ -134,7 +134,7 @@
 [5131] = { 3,	TF,		SEN(mknod),			"mknod"			},
 [5132] = { 1,	NF,		SEN(personality),		"personality"		},
 [5133] = { 2,	0,		SEN(ustat),			"ustat"			},
-[5134] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[5134] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [5135] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [5136] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [5137] = { 2,	0,		SEN(getpriority),		"getpriority"		},
diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h
index 509a719..b6b5626 100644
--- a/linux/mips/syscallent-o32.h
+++ b/linux/mips/syscallent-o32.h
@@ -99,7 +99,7 @@
 [4096] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [4097] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [4098] = { 0,	0,		SEN(profil),			"profil"		},
-[4099] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[4099] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [4100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [4101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [4102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -255,7 +255,7 @@
 [4252] = { 1,	0,		SEN(set_tid_address),		"set_tid_address"	},
 [4253] = { 0,	0,		SEN(restart_syscall),		"restart_syscall"	},
 [4254] = { 7,	TD,		SEN(fadvise64_64),		"fadvise64"		},
-[4255] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[4255] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [4256] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [4257] = { 3,	0,		SEN(timer_create),		"timer_create"		},
 [4258] = { 4,	0,		SEN(timer_settime),		"timer_settime"		},
diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h
index 1431f8a..8d2b98f 100644
--- a/linux/powerpc/syscallent.h
+++ b/linux/powerpc/syscallent.h
@@ -125,7 +125,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -278,7 +278,7 @@
 [249] = { 2,	0,		SEN(printargs),			"swapcontext"		},
 [250] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [251] = { 2,	TF,		SEN(utimes),			"utimes"		},
-[252] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[252] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [253] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [254] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
 [255] = { 1,	0,		SEN(printargs),			"rtas"			},
diff --git a/linux/powerpc64/syscallent.h b/linux/powerpc64/syscallent.h
index eae3b57..ee2ceed 100644
--- a/linux/powerpc64/syscallent.h
+++ b/linux/powerpc64/syscallent.h
@@ -125,7 +125,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -273,7 +273,7 @@
 [249] = { 2,	0,		SEN(printargs),			"swapcontext"		},
 [250] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [251] = { 2,	TF,		SEN(utimes),			"utimes"		},
-[252] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[252] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [253] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [254] = { },
 [255] = { 1,	0,		SEN(printargs),			"rtas"			},
diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h
index 105e511..2194696 100644
--- a/linux/s390/syscallent.h
+++ b/linux/s390/syscallent.h
@@ -127,7 +127,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { },
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -293,7 +293,7 @@
 [262] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
 [263] = { 5,	0,		SEN(vserver),			"vserver"		},
 [264] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
-[265] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[265] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [266] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [267] = { 5,	TM|SI,		SEN(remap_file_pages),		"remap_file_pages"	},
 [268] = { 6,	TM,		SEN(mbind),			"mbind"			},
diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h
index d5b5459..e8d47cb 100644
--- a/linux/s390x/syscallent.h
+++ b/linux/s390x/syscallent.h
@@ -121,7 +121,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { },
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { },
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -277,7 +277,7 @@
 [262] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
 [263] = { 5,	0,		SEN(vserver),			"vserver"		},
 [264] = { },
-[265] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[265] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [266] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [267] = { 5,	TM|SI,		SEN(remap_file_pages),		"remap_file_pages"	},
 [268] = { 6,	TM,		SEN(mbind),			"mbind"			},
diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h
index 1388416..89f1e19 100644
--- a/linux/sh/syscallent.h
+++ b/linux/sh/syscallent.h
@@ -127,7 +127,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -293,7 +293,7 @@
 [265] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [266] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [267] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[268] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[268] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [269] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [270] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [271] = { 2,	TF,		SEN(utimes),			"utimes"		},
diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h
index e935104..42f2199 100644
--- a/linux/sh64/syscallent.h
+++ b/linux/sh64/syscallent.h
@@ -125,7 +125,7 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[ 99] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
@@ -319,7 +319,7 @@
 [293] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [294] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [295] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[296] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[296] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [297] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [298] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [299] = { 2,	TF,		SEN(utimes),			"utimes"		},
diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h
index 30d8819..6e0cff6 100644
--- a/linux/sparc/syscallent.h
+++ b/linux/sparc/syscallent.h
@@ -155,7 +155,7 @@
 [154] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [155] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [156] = { 2,	TD,		SEN(inotify_rm_watch),		"inotify_rm_watch"	},
-[157] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[157] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [158] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [159] = { 1,	TF,		SEN(umount),			"umount"		},
 [160] = { 3,	TSC,		SEN(sched_setaffinity),		"sched_set_affinity"	},
@@ -232,7 +232,7 @@
 [231] = { 1,	0,		SEN(time),			"time"			},
 [232] = { 6,	TD,		SEN(splice),			"splice"		},
 [233] = { 1,	0,		SEN(stime),			"stime"			},
-[234] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[234] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [235] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [236] = { 5,	TD,		SEN(llseek),			"_llseek"		},
 [237] = { 2,	TM,		SEN(mlock),			"mlock"			},
diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h
index 1137a3e..6bf370e 100644
--- a/linux/sparc64/syscallent.h
+++ b/linux/sparc64/syscallent.h
@@ -153,7 +153,7 @@
 [154] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [155] = { },
 [156] = { 2,	TD,		SEN(inotify_rm_watch),		"inotify_rm_watch"	},
-[157] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[157] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [158] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [159] = { 1,	TF,		SEN(umount),			"umount"		},
 [160] = { 3,	TSC,		SEN(sched_setaffinity),		"sched_set_affinity"	},
@@ -230,7 +230,7 @@
 [231] = { },
 [232] = { 6,	TD,		SEN(splice),			"splice"		},
 [233] = { 1,	0,		SEN(stime),			"stime"			},
-[234] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[234] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [235] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [236] = { 5,	TD,		SEN(llseek),			"_llseek"		},
 [237] = { 2,	TM,		SEN(mlock),			"mlock"			},
diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h
index 60bda37..9363399 100644
--- a/linux/x32/syscallent.h
+++ b/linux/x32/syscallent.h
@@ -135,7 +135,7 @@
 [134] = { 1,	TF,		SEN(printargs),			"64:uselib"		},
 [135] = { 1,	NF,		SEN(personality),		"personality"		},
 [136] = { 2,	0,		SEN(ustat),			"ustat"			},
-[137] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[137] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [138] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [139] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [140] = { 2,	0,		SEN(getpriority),		"getpriority"		},
diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h
index 73165b8..794bbbe 100644
--- a/linux/x86_64/syscallent.h
+++ b/linux/x86_64/syscallent.h
@@ -135,7 +135,7 @@
 [134] = { 1,	TF,		SEN(uselib),			"uselib"		},
 [135] = { 1,	NF,		SEN(personality),		"personality"		},
 [136] = { 2,	0,		SEN(ustat),			"ustat"			},
-[137] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[137] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [138] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
 [139] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [140] = { 2,	0,		SEN(getpriority),		"getpriority"		},
diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h
index 63995bc..40bd8f8 100644
--- a/linux/xtensa/syscallent.h
+++ b/linux/xtensa/syscallent.h
@@ -176,9 +176,9 @@
 [181] = { 1,	NF,		SEN(setfsgid),			"setfsgid"		},
 [182] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [183] = { 2,	0,		SEN(ustat),			"ustat"			},
-[184] = { 2,	TF,		SEN(statfs),			"statfs"		},
+[184] = { 2,	TF|TSF,		SEN(statfs),			"statfs"		},
 [185] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
-[186] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[186] = { 3,	TF|TSF,		SEN(statfs64),			"statfs64"		},
 [187] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [188] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
 [189] = { 2,	0,		SEN(getrlimit),			"getrlimit"		},
diff --git a/qualify.c b/qualify.c
index b5023f2..692f7ec 100644
--- a/qualify.c
+++ b/qualify.c
@@ -220,6 +220,7 @@ lookup_class(const char *s)
 		{ "%ipc",	TRACE_IPC	},
 		{ "%network",	TRACE_NETWORK	},
 		{ "%sched",	TRACE_SCHED	},
+		{ "%statfs",	TRACE_STATFS	},
 	};
 
 	unsigned int i;
diff --git a/strace.1 b/strace.1
index 9b69ec2..c2482e5 100644
--- a/strace.1
+++ b/strace.1
@@ -429,6 +429,9 @@ Trace all memory mapping related system calls.
 .BR "\-e\ trace" = %sched
 Trace all scheduler-related (sched_*) system calls.
 .TP
+.BR "\-e\ trace" = %statfs
+Trace statfs, statfs64 and statvfs system calls.
+.TP
 \fB\-e\ abbrev\fR=\,\fIset\fR
 Abbreviate the output from printing each member of large structures.
 The default is
diff --git a/syscall.c b/syscall.c
index 569055f..2a93731 100644
--- a/syscall.c
+++ b/syscall.c
@@ -77,6 +77,7 @@
 #define TS TRACE_SIGNAL
 #define TM TRACE_MEMORY
 #define TSC TRACE_SCHED
+#define TSF TRACE_STATFS
 #define NF SYSCALL_NEVER_FAILS
 #define MA MAX_ARGS
 #define SI STACKTRACE_INVALIDATE_CACHE
@@ -113,6 +114,7 @@ static const struct_sysent sysent2[] = {
 #undef TS
 #undef TM
 #undef TSC
+#undef TSF
 #undef NF
 #undef MA
 #undef SI
diff --git a/sysent.h b/sysent.h
index f4eaa93..9820805 100644
--- a/sysent.h
+++ b/sysent.h
@@ -22,5 +22,6 @@ typedef struct sysent {
 #define TRACE_INDIRECT_SUBCALL	02000	/* Syscall is an indirect socket/ipc subcall. */
 #define COMPAT_SYSCALL_TYPES	04000	/* A compat syscall that uses compat types. */
 #define TRACE_SCHED		010000  /* Trace scheduler-related syscalls. */
+#define TRACE_STATFS		040000	/* Trace group statfs, statfs64 and statvfs syscalls */
 
 #endif /* !STRACE_SYSENT_H */
diff --git a/tests/Makefile.am b/tests/Makefile.am
index c6c28cc..a65b001 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -803,6 +803,7 @@ DECODER_TESTS = \
 	timerfd_xettime.test \
 	times-fail.test \
 	times.test \
+	trace_statfs.test \
 	truncate.test \
 	truncate64.test \
 	ugetrlimit.test \
diff --git a/tests/ksysent.c b/tests/ksysent.c
index 252feff..0db235a 100644
--- a/tests/ksysent.c
+++ b/tests/ksysent.c
@@ -41,6 +41,7 @@
 #define TS 0
 #define TM 0
 #define TSC 0
+#define TSF 0
 #define NF 0
 #define MA 0
 #define SI 0
diff --git a/tests/nsyscalls.c b/tests/nsyscalls.c
index c2bdb20..9ed4b0a 100644
--- a/tests/nsyscalls.c
+++ b/tests/nsyscalls.c
@@ -42,6 +42,7 @@
 #define TS 0
 #define TM 0
 #define TSC 0
+#define TSF 0
 #define NF 0
 #define MA 0
 #define SI 0
diff --git a/tests/trace_statfs.test b/tests/trace_statfs.test
new file mode 100755
index 0000000..e04760a
--- /dev/null
+++ b/tests/trace_statfs.test
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# Check how syscalls of statfs class are traced.
+#
+# Copyright (c) 2017 The strace developers.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+#    derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/init.sh"
+
+while read w i
+do
+	try_run_prog "./$i" || continue
+	run_strace -a$w -e%statfs ./$i > "$EXP"
+	match_diff "$LOG" "$EXP"
+done << EOF
+17 statfs
+20 statfs64
+EOF
+
+echo '+++ exited with 0 +++' > "$EXP"
+
+while read w i
+do
+	try_run_prog "./$i" || continue
+	run_strace -a$w -e%statfs ./$i > /dev/null
+	match_diff "$LOG" "$EXP"
+done << EOF
+11 fchdir
+27 futex
+10 fsync
+23 sched_xetparam
+29 sched_xetattr
+14 sched_yield
+EOF
+
+rm "$EXP"
-- 
2.7.4

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to