Lines Matching full:fd
28 void (*open_fd)(struct tst_fd *fd);
29 void (*destroy)(struct tst_fd *fd);
33 static void open_file(struct tst_fd *fd) in open_file() argument
35 fd->fd = SAFE_OPEN("fd_file", O_RDWR | O_CREAT, 0666); in open_file()
39 static void open_path(struct tst_fd *fd) in open_path() argument
46 fd->fd = SAFE_OPEN("fd_file", O_PATH); in open_path()
51 static void open_dir(struct tst_fd *fd) in open_dir() argument
54 fd->fd = SAFE_OPEN("fd_dir", O_DIRECTORY); in open_dir()
58 static void open_dev_zero(struct tst_fd *fd) in open_dev_zero() argument
60 fd->fd = SAFE_OPEN("/dev/zero", O_RDONLY); in open_dev_zero()
63 static void open_proc_self_maps(struct tst_fd *fd) in open_proc_self_maps() argument
65 fd->fd = SAFE_OPEN("/proc/self/maps", O_RDONLY); in open_proc_self_maps()
68 static void open_pipe_read(struct tst_fd *fd) in open_pipe_read() argument
73 fd->fd = pipe[0]; in open_pipe_read()
74 fd->priv = pipe[1]; in open_pipe_read()
77 static void open_pipe_write(struct tst_fd *fd) in open_pipe_write() argument
82 fd->fd = pipe[1]; in open_pipe_write()
83 fd->priv = pipe[0]; in open_pipe_write()
86 static void destroy_pipe(struct tst_fd *fd) in destroy_pipe() argument
88 SAFE_CLOSE(fd->priv); in destroy_pipe()
91 static void open_unix_sock(struct tst_fd *fd) in open_unix_sock() argument
93 fd->fd = SAFE_SOCKET(AF_UNIX, SOCK_STREAM, 0); in open_unix_sock()
96 static void open_inet_sock(struct tst_fd *fd) in open_inet_sock() argument
98 fd->fd = SAFE_SOCKET(AF_INET, SOCK_STREAM, 0); in open_inet_sock()
101 static void open_epoll(struct tst_fd *fd) in open_epoll() argument
103 fd->fd = epoll_create(1); in open_epoll()
105 if (fd->fd < 0) in open_epoll()
109 static void open_eventfd(struct tst_fd *fd) in open_eventfd() argument
111 fd->fd = eventfd(0, 0); in open_eventfd()
113 if (fd->fd < 0) in open_eventfd()
114 tst_res(TCONF | TERRNO, "Skipping %s", tst_fd_desc(fd)); in open_eventfd()
117 static void open_signalfd(struct tst_fd *fd) in open_signalfd() argument
123 fd->fd = signalfd(-1, &sfd_mask, 0); in open_signalfd()
124 if (fd->fd < 0) { in open_signalfd()
126 "Skipping %s", tst_fd_desc(fd)); in open_signalfd()
130 static void open_timerfd(struct tst_fd *fd) in open_timerfd() argument
132 fd->fd = timerfd_create(CLOCK_REALTIME, 0); in open_timerfd()
134 if (fd->fd < 0) { in open_timerfd()
136 "Skipping %s", tst_fd_desc(fd)); in open_timerfd()
140 static void open_pidfd(struct tst_fd *fd) in open_pidfd() argument
142 fd->fd = syscall(__NR_pidfd_open, getpid(), 0); in open_pidfd()
143 if (fd->fd < 0) in open_pidfd()
147 static void open_fanotify(struct tst_fd *fd) in open_fanotify() argument
149 fd->fd = syscall(__NR_fanotify_init, FAN_CLASS_NOTIF, O_RDONLY); in open_fanotify()
150 if (fd->fd < 0) { in open_fanotify()
152 "Skipping %s", tst_fd_desc(fd)); in open_fanotify()
156 static void open_inotify(struct tst_fd *fd) in open_inotify() argument
158 fd->fd = inotify_init(); in open_inotify()
159 if (fd->fd < 0) { in open_inotify()
161 "Skipping %s", tst_fd_desc(fd)); in open_inotify()
165 static void open_userfaultfd(struct tst_fd *fd) in open_userfaultfd() argument
167 fd->fd = syscall(__NR_userfaultfd, 0); in open_userfaultfd()
169 if (fd->fd < 0) { in open_userfaultfd()
171 "Skipping %s", tst_fd_desc(fd)); in open_userfaultfd()
175 static void open_perf_event(struct tst_fd *fd) in open_perf_event() argument
186 fd->fd = syscall(__NR_perf_event_open, &pe_attr, 0, -1, -1, 0); in open_perf_event()
187 if (fd->fd < 0) { in open_perf_event()
189 "Skipping %s", tst_fd_desc(fd)); in open_perf_event()
193 static void open_io_uring(struct tst_fd *fd) in open_io_uring() argument
197 fd->fd = syscall(__NR_io_uring_setup, 1, &uring_params); in open_io_uring()
198 if (fd->fd < 0) { in open_io_uring()
200 "Skipping %s", tst_fd_desc(fd)); in open_io_uring()
204 static void open_bpf_map(struct tst_fd *fd) in open_bpf_map() argument
213 fd->fd = syscall(__NR_bpf, BPF_MAP_CREATE, &array_attr, sizeof(array_attr)); in open_bpf_map()
214 if (fd->fd < 0) { in open_bpf_map()
216 "Skipping %s", tst_fd_desc(fd)); in open_bpf_map()
220 static void open_fsopen(struct tst_fd *fd) in open_fsopen() argument
222 fd->fd = syscall(__NR_fsopen, "ext2", 0); in open_fsopen()
223 if (fd->fd < 0) { in open_fsopen()
225 "Skipping %s", tst_fd_desc(fd)); in open_fsopen()
229 static void open_fspick(struct tst_fd *fd) in open_fspick() argument
231 fd->fd = syscall(__NR_fspick, AT_FDCWD, "/", 0); in open_fspick()
232 if (fd->fd < 0) { in open_fspick()
234 "Skipping %s", tst_fd_desc(fd)); in open_fspick()
238 static void open_open_tree(struct tst_fd *fd) in open_open_tree() argument
240 fd->fd = syscall(__NR_open_tree, AT_FDCWD, "/", 0); in open_open_tree()
241 if (fd->fd < 0) { in open_open_tree()
243 "Skipping %s", tst_fd_desc(fd)); in open_open_tree()
247 static void open_memfd(struct tst_fd *fd) in open_memfd() argument
249 fd->fd = syscall(__NR_memfd_create, "ltp_memfd", 0); in open_memfd()
250 if (fd->fd < 0) { in open_memfd()
252 "Skipping %s", tst_fd_desc(fd)); in open_memfd()
256 static void open_memfd_secret(struct tst_fd *fd) in open_memfd_secret() argument
258 fd->fd = syscall(__NR_memfd_secret, 0); in open_memfd_secret()
259 if (fd->fd < 0) { in open_memfd_secret()
261 "Skipping %s", tst_fd_desc(fd)); in open_memfd_secret()
293 const char *tst_fd_desc(struct tst_fd *fd) in tst_fd_desc() argument
295 if (fd->type >= ARRAY_SIZE(fd_desc)) in tst_fd_desc()
298 return fd_desc[fd->type].desc; in tst_fd_desc()
301 int tst_fd_next(struct tst_fd *fd) in tst_fd_next() argument
305 if (fd->fd >= 0) { in tst_fd_next()
306 SAFE_CLOSE(fd->fd); in tst_fd_next()
308 if (fd_desc[fd->type].destroy) in tst_fd_next()
309 fd_desc[fd->type].destroy(fd); in tst_fd_next()
311 fd->type++; in tst_fd_next()
315 if (fd->type >= len) in tst_fd_next()
318 fd_desc[fd->type].open_fd(fd); in tst_fd_next()
320 if (fd->fd >= 0) in tst_fd_next()
323 fd->type++; in tst_fd_next()