[PATCH] Adjust statx parser and syscall entries lists to the upstream

Victor Krapivensky krapivenskiy.va at phystech.edu
Sat Apr 15 08:43:12 UTC 2017


* linux/32/syscallent.h [291]: Add statx entry.
* linux/64/syscallent.h [291]: Likewise.
* linux/arm/syscallent.h [397]: Likewise.
* linux/m68k/syscallent.h [379]: Likewise.
* linux/mips/syscallent-n32.h [6330]: Likewise.
* linux/mips/syscallent-n64.h [5326]: Likewise.
* linux/mips/syscallent-o32.h [4366]: Likewise.
* linux/powerpc/syscallent.h [383]: Likewise.
* linux/s390/syscallent.h [379]: Likewise.
* linux/s390x/syscallent.h [379]: Likewise.
* linux/xtensa/syscallent.h [351]: Likewise.
* statx.h: update definition of struct_statx.
* statx.c (SYS_FUNC(statx)): print stx_attributes_mask field of
struct_statx.
* tests/xstatx.c: update to test stx_attributes_mask.
---
 linux/32/syscallent.h       | 1 +
 linux/64/syscallent.h       | 1 +
 linux/arm/syscallent.h      | 1 +
 linux/m68k/syscallent.h     | 1 +
 linux/mips/syscallent-n32.h | 1 +
 linux/mips/syscallent-n64.h | 1 +
 linux/mips/syscallent-o32.h | 1 +
 linux/powerpc/syscallent.h  | 1 +
 linux/s390/syscallent.h     | 2 ++
 linux/s390x/syscallent.h    | 2 ++
 linux/xtensa/syscallent.h   | 2 ++
 statx.c                     | 5 +++++
 statx.h                     | 3 ++-
 tests/xstatx.c              | 5 +++++
 14 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h
index 530645f..67898b8 100644
--- a/linux/32/syscallent.h
+++ b/linux/32/syscallent.h
@@ -281,6 +281,7 @@
 [288] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [289] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [290] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[291] = { 5,	TD|TF,		SEN(statx),			"statx"			},
 
 #undef sys_ARCH_mmap
 #undef ARCH_WANT_SYNC_FILE_RANGE2
diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h
index 9d2edec..3b3e048 100644
--- a/linux/64/syscallent.h
+++ b/linux/64/syscallent.h
@@ -274,3 +274,4 @@
 [288] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [289] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [290] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[291] = { 5,	TD|TF,		SEN(statx),			"statx"			},
diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h
index 749e02e..459160b 100644
--- a/linux/arm/syscallent.h
+++ b/linux/arm/syscallent.h
@@ -421,6 +421,7 @@
 [394] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [395] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [396] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[397] = { 5,	TD|TF,		SEN(statx),			"statx"			},
 
 #ifdef __ARM_EABI__
 # define ARM_FIRST_SHUFFLED_SYSCALL 400
diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h
index b22f6a1..4db376b 100644
--- a/linux/m68k/syscallent.h
+++ b/linux/m68k/syscallent.h
@@ -404,6 +404,7 @@
 [376] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [377] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [378] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[379] = { 5,	TD|TF,		SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h
index 9a08c89..4bf3148 100644
--- a/linux/mips/syscallent-n32.h
+++ b/linux/mips/syscallent-n32.h
@@ -330,6 +330,7 @@
 [6327] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [6328] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [6329] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[6330] = { 5,	TD|TF,		SEN(statx),			"statx"			},
 
 # define SYS_socket_subcall      6400
 # include "subcall.h"
diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h
index 7f8273a..5999cfa 100644
--- a/linux/mips/syscallent-n64.h
+++ b/linux/mips/syscallent-n64.h
@@ -326,6 +326,7 @@
 [5323] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [5324] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [5325] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[5326] = { 5,	TD|TF,		SEN(statx),			"statx"			},
 
 # define SYS_socket_subcall      5400
 # include "subcall.h"
diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h
index 58ba621..db8ee1f 100644
--- a/linux/mips/syscallent-o32.h
+++ b/linux/mips/syscallent-o32.h
@@ -366,6 +366,7 @@
 [4363] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [4364] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [4365] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[4366] = { 5,	TD|TF,		SEN(statx),			"statx"			},
 
 # define SYS_socket_subcall      4400
 # include "subcall.h"
diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h
index d8dd2f6..d6375df 100644
--- a/linux/powerpc/syscallent.h
+++ b/linux/powerpc/syscallent.h
@@ -409,6 +409,7 @@
 [380] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [381] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 [382] = { 5,	TD,		SEN(kexec_file_load),		"kexec_file_load"	},
+[383] = { 5,	TD|TF,		SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h
index 009a700..7af4223 100644
--- a/linux/s390/syscallent.h
+++ b/linux/s390/syscallent.h
@@ -406,6 +406,8 @@
 [375] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [376] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [377] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[378] = { },
+[379] = { 5,	TD|TF,		SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h
index d71b093..d64ca3f 100644
--- a/linux/s390x/syscallent.h
+++ b/linux/s390x/syscallent.h
@@ -390,6 +390,8 @@
 [375] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [376] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [377] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[378] = { },
+[379] = { 5,	TD|TF,		SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h
index 2215b6a..bfacb6a 100644
--- a/linux/xtensa/syscallent.h
+++ b/linux/xtensa/syscallent.h
@@ -336,3 +336,5 @@
 [345] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [346] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [347] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[348 ... 350] = { },
+[351] = { 5,	TD|TF,		SEN(statx),			"statx"			},
diff --git a/statx.c b/statx.c
index 7c647fa..c53f29c 100644
--- a/statx.c
+++ b/statx.c
@@ -94,6 +94,11 @@ SYS_FUNC(statx)
 
 		if (!abbrev(tcp)) {
 			PRINT_FIELD_U(stx_blocks);
+
+			tprints(", stx_attributes_mask=");
+			printflags(statx_attrs, stx.stx_attributes_mask,
+				   "STATX_ATTR_???");
+
 			PRINT_FIELD_TIME(stx_atime);
 			PRINT_FIELD_TIME(stx_btime);
 			PRINT_FIELD_TIME(stx_ctime);
diff --git a/statx.h b/statx.h
index d946291..2037287 100644
--- a/statx.h
+++ b/statx.h
@@ -51,7 +51,8 @@ typedef struct {
 	uint64_t stx_ino; /* Inode number */
 	uint64_t stx_size; /* File size */
 	uint64_t stx_blocks; /* Number of 512-byte blocks allocated */
-	uint64_t reserved1[1];
+	uint64_t stx_attributes_mask; /* Mask to show what's supported in
+	                                 stx_attributes */
 
 	struct_statx_timestamp stx_atime; /* Last access time */
 	struct_statx_timestamp stx_btime; /* File creation time */
diff --git a/tests/xstatx.c b/tests/xstatx.c
index 774aae0..f4e1a90 100644
--- a/tests/xstatx.c
+++ b/tests/xstatx.c
@@ -224,6 +224,10 @@ print_stat(const STRUCT_STAT *st)
 	PRINT_FIELD_U(stx_ino);
 	PRINT_FIELD_U(stx_size);
 	PRINT_FIELD_U(stx_blocks);
+
+	printf(", stx_attributes_mask=");
+	printflags(statx_attrs, st->stx_attributes_mask, "STATX_ATTR_???");
+
 	PRINT_FIELD_TIME(stx_atime);
 	PRINT_FIELD_TIME(stx_btime);
 	PRINT_FIELD_TIME(stx_ctime);
@@ -338,6 +342,7 @@ main(void)
 		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ino);
 		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_size);
 		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_blocks);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_attributes_mask);
 		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_atime);
 		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_btime);
 		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ctime);
-- 
2.10.2





More information about the Strace-devel mailing list