a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney/*
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney * This file and its contents are supplied under the terms of the
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney * Common Development and Distribution License ("CDDL"), version 1.0.
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney * You may only use this file in accordance with the terms of version
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney * 1.0 of the CDDL.
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney *
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney * A full copy of the text of the CDDL should have accompanied this
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney * source. A copy of the CDDL is also available via the Internet at
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney * http://www.illumos.org/license/CDDL.
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney */
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney/*
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney * Copyright 2016 Joyent, Inc.
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney */
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney#include <stdlib.h>
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney#include <stdio.h>
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney#include <unistd.h>
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney#include <fcntl.h>
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney#include <sys/epoll.h>
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney#include <errno.h>
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney#include <assert.h>
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooneyint
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooneymain()
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney{
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney int fd, flags;
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney fd = epoll_create1(0);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney assert(fd >= 0);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney flags = fcntl(fd, F_GETFD);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney assert(flags != -1 && (flags & FD_CLOEXEC) == 0);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney (void) close(fd);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney fd = epoll_create1(EPOLL_CLOEXEC);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney assert(fd >= 0);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney flags = fcntl(fd, F_GETFD);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney assert(flags != -1 && (flags & FD_CLOEXEC) == FD_CLOEXEC);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney (void) close(fd);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney fd = epoll_create1(EPOLL_CLOEXEC * 3);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney assert(fd == -1 && errno == EINVAL);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney fd = epoll_create1(EPOLL_CLOEXEC * 2);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney assert(fd == -1 && errno == EINVAL);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney return (0);
a192d1c0eb1d05a03ead3c7f898e864e4bf0399cPatrick Mooney}