xref: /aosp_15_r20/external/strace/tests-m32/file_ioctl.c (revision cf84ac9a129d8ea9952db616b4e9b904c4bdde56)
1*cf84ac9aSAndroid Build Coastguard Worker #include "tests.h"
2*cf84ac9aSAndroid Build Coastguard Worker 
3*cf84ac9aSAndroid Build Coastguard Worker #ifdef HAVE_LINUX_FIEMAP_H
4*cf84ac9aSAndroid Build Coastguard Worker 
5*cf84ac9aSAndroid Build Coastguard Worker # include <stdio.h>
6*cf84ac9aSAndroid Build Coastguard Worker # include <sys/ioctl.h>
7*cf84ac9aSAndroid Build Coastguard Worker # include <linux/fiemap.h>
8*cf84ac9aSAndroid Build Coastguard Worker # include <linux/fs.h>
9*cf84ac9aSAndroid Build Coastguard Worker # include "xlat.h"
10*cf84ac9aSAndroid Build Coastguard Worker # include "xlat/fiemap_flags.h"
11*cf84ac9aSAndroid Build Coastguard Worker 
12*cf84ac9aSAndroid Build Coastguard Worker static void
test_fiemap(void)13*cf84ac9aSAndroid Build Coastguard Worker test_fiemap(void)
14*cf84ac9aSAndroid Build Coastguard Worker {
15*cf84ac9aSAndroid Build Coastguard Worker 	(void) tail_alloc(1);
16*cf84ac9aSAndroid Build Coastguard Worker 	TAIL_ALLOC_OBJECT_CONST_PTR(struct fiemap, args);
17*cf84ac9aSAndroid Build Coastguard Worker 
18*cf84ac9aSAndroid Build Coastguard Worker 	printf("ioctl(-1, FS_IOC_FIEMAP, {fm_start=%" PRI__u64
19*cf84ac9aSAndroid Build Coastguard Worker 	       ", fm_length=%" PRI__u64", fm_flags=",
20*cf84ac9aSAndroid Build Coastguard Worker 	       args->fm_start, args->fm_length);
21*cf84ac9aSAndroid Build Coastguard Worker 	printflags(fiemap_flags, args->fm_flags, "FIEMAP_FLAG_???");
22*cf84ac9aSAndroid Build Coastguard Worker 	printf(", fm_extent_count=%u})", args->fm_extent_count);
23*cf84ac9aSAndroid Build Coastguard Worker 	ioctl(-1, FS_IOC_FIEMAP, args);
24*cf84ac9aSAndroid Build Coastguard Worker 	printf(" = -1 EBADF (%m)\n");
25*cf84ac9aSAndroid Build Coastguard Worker 
26*cf84ac9aSAndroid Build Coastguard Worker 	/* The live version of this test is in btrfs.c */
27*cf84ac9aSAndroid Build Coastguard Worker }
28*cf84ac9aSAndroid Build Coastguard Worker 
29*cf84ac9aSAndroid Build Coastguard Worker /* clone and dedupe ioctls are in btrfs.c since they originated there */
30*cf84ac9aSAndroid Build Coastguard Worker 
31*cf84ac9aSAndroid Build Coastguard Worker int
main(int argc,char * argv[])32*cf84ac9aSAndroid Build Coastguard Worker main(int argc, char *argv[])
33*cf84ac9aSAndroid Build Coastguard Worker {
34*cf84ac9aSAndroid Build Coastguard Worker 	test_fiemap();
35*cf84ac9aSAndroid Build Coastguard Worker 
36*cf84ac9aSAndroid Build Coastguard Worker 	puts("+++ exited with 0 +++");
37*cf84ac9aSAndroid Build Coastguard Worker 
38*cf84ac9aSAndroid Build Coastguard Worker 	return 0;
39*cf84ac9aSAndroid Build Coastguard Worker }
40*cf84ac9aSAndroid Build Coastguard Worker 
41*cf84ac9aSAndroid Build Coastguard Worker #else
42*cf84ac9aSAndroid Build Coastguard Worker 
43*cf84ac9aSAndroid Build Coastguard Worker SKIP_MAIN_UNDEFINED("HAVE_LINUX_FIEMAP_H")
44*cf84ac9aSAndroid Build Coastguard Worker 
45*cf84ac9aSAndroid Build Coastguard Worker #endif
46