1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright (c) Ulrich Drepper <drepper@redhat.com>
4 * Copyright (c) International Business Machines  Corp., 2009
5 * Copyright (C) 2023 SUSE LLC Andrea Cervesato <andrea.cervesato@suse.com>
6 */
7
8/*\
9 * [Description]
10 *
11 * This test verifies that eventfd2 correctly set FD_CLOEXEC flag on file when
12 * EFD_CLOEXEC flag is used.
13 */
14
15#include <fcntl.h>
16#include <sys/eventfd.h>
17#include "tst_test.h"
18#include "eventfd2.h"
19
20static void run(void)
21{
22	int fd, flags;
23
24	fd = eventfd2(1, 0);
25	flags = SAFE_FCNTL(fd, F_GETFD);
26	TST_EXP_EXPR(!(flags & FD_CLOEXEC), "FD_CLOEXEC is not set");
27	SAFE_CLOSE(fd);
28
29	fd = eventfd2(1, EFD_CLOEXEC);
30	flags = SAFE_FCNTL(fd, F_GETFD);
31	TST_EXP_EXPR((flags & FD_CLOEXEC), "FD_CLOEXEC is set");
32	SAFE_CLOSE(fd);
33}
34
35static struct tst_test test = {
36	.test_all = run,
37};
38