xref: /aosp_15_r20/external/ltp/include/tst_fd.h (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later
2*49cdfc7eSAndroid Build Coastguard Worker 
3*49cdfc7eSAndroid Build Coastguard Worker /*
4*49cdfc7eSAndroid Build Coastguard Worker  * Copyright (C) 2023 Cyril Hrubis <[email protected]>
5*49cdfc7eSAndroid Build Coastguard Worker  */
6*49cdfc7eSAndroid Build Coastguard Worker 
7*49cdfc7eSAndroid Build Coastguard Worker #ifndef TST_FD_H__
8*49cdfc7eSAndroid Build Coastguard Worker #define TST_FD_H__
9*49cdfc7eSAndroid Build Coastguard Worker 
10*49cdfc7eSAndroid Build Coastguard Worker enum tst_fd_type {
11*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_FILE,
12*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_PATH,
13*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_DIR,
14*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_DEV_ZERO,
15*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_PROC_MAPS,
16*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_PIPE_READ,
17*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_PIPE_WRITE,
18*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_UNIX_SOCK,
19*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_INET_SOCK,
20*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_EPOLL,
21*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_EVENTFD,
22*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_SIGNALFD,
23*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_TIMERFD,
24*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_PIDFD,
25*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_FANOTIFY,
26*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_INOTIFY,
27*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_USERFAULTFD,
28*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_PERF_EVENT,
29*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_IO_URING,
30*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_BPF_MAP,
31*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_FSOPEN,
32*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_FSPICK,
33*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_OPEN_TREE,
34*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_MEMFD,
35*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_MEMFD_SECRET,
36*49cdfc7eSAndroid Build Coastguard Worker 	TST_FD_MAX,
37*49cdfc7eSAndroid Build Coastguard Worker };
38*49cdfc7eSAndroid Build Coastguard Worker 
39*49cdfc7eSAndroid Build Coastguard Worker struct tst_fd {
40*49cdfc7eSAndroid Build Coastguard Worker 	enum tst_fd_type type;
41*49cdfc7eSAndroid Build Coastguard Worker 	int fd;
42*49cdfc7eSAndroid Build Coastguard Worker 	/* used by the library, do not touch! */
43*49cdfc7eSAndroid Build Coastguard Worker 	long priv;
44*49cdfc7eSAndroid Build Coastguard Worker };
45*49cdfc7eSAndroid Build Coastguard Worker 
46*49cdfc7eSAndroid Build Coastguard Worker #define TST_FD_INIT {.type = TST_FD_FILE, .fd = -1}
47*49cdfc7eSAndroid Build Coastguard Worker 
48*49cdfc7eSAndroid Build Coastguard Worker /*
49*49cdfc7eSAndroid Build Coastguard Worker  * Advances the iterator to the next fd type, returns zero at the end.
50*49cdfc7eSAndroid Build Coastguard Worker  */
51*49cdfc7eSAndroid Build Coastguard Worker int tst_fd_next(struct tst_fd *fd);
52*49cdfc7eSAndroid Build Coastguard Worker 
53*49cdfc7eSAndroid Build Coastguard Worker #define TST_FD_FOREACH(fd) \
54*49cdfc7eSAndroid Build Coastguard Worker 	for (struct tst_fd fd = TST_FD_INIT; tst_fd_next(&fd); )
55*49cdfc7eSAndroid Build Coastguard Worker 
56*49cdfc7eSAndroid Build Coastguard Worker /*
57*49cdfc7eSAndroid Build Coastguard Worker  * Returns human readable name for the file descriptor type.
58*49cdfc7eSAndroid Build Coastguard Worker  */
59*49cdfc7eSAndroid Build Coastguard Worker const char *tst_fd_desc(struct tst_fd *fd);
60*49cdfc7eSAndroid Build Coastguard Worker 
61*49cdfc7eSAndroid Build Coastguard Worker #endif /* TST_FD_H__ */
62