Renames shadow variables found by -Wshadow. Signed-off-by: Daniel Leung <daniel.leung@intel.com>
109 lines
2.2 KiB
C
109 lines
2.2 KiB
C
/*
|
|
* Copyright (c) 2020 Tobias Svehagen
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include "_main.h"
|
|
|
|
void reopen(int *fd, int initval, int flags)
|
|
{
|
|
zassert_not_null(fd);
|
|
zassert_ok(close(*fd));
|
|
*fd = eventfd(initval, flags);
|
|
zassert_true(*fd >= 0, "eventfd(%d, %d) failed: %d", initval, flags, errno);
|
|
}
|
|
|
|
int is_blocked(int fd, short *event)
|
|
{
|
|
struct pollfd pfd;
|
|
int ret;
|
|
|
|
pfd.fd = fd;
|
|
pfd.events = *event;
|
|
|
|
ret = poll(&pfd, 1, 0);
|
|
zassert_true(ret >= 0, "poll failed %d", ret);
|
|
|
|
*event = pfd.revents;
|
|
|
|
return ret == 0;
|
|
}
|
|
|
|
void eventfd_poll_unset_common(int fd)
|
|
{
|
|
eventfd_t val = 0;
|
|
short event;
|
|
int ret;
|
|
|
|
event = POLLIN;
|
|
ret = is_blocked(fd, &event);
|
|
zassert_equal(ret, 1, "eventfd not blocked with initval == 0");
|
|
|
|
ret = eventfd_write(fd, TESTVAL);
|
|
zassert_equal(ret, 0, "write ret %d", ret);
|
|
|
|
event = POLLIN;
|
|
ret = is_blocked(fd, &event);
|
|
zassert_equal(ret, 0, "eventfd blocked after write");
|
|
zassert_equal(event, POLLIN, "POLLIN not set");
|
|
|
|
ret = eventfd_write(fd, TESTVAL);
|
|
zassert_equal(ret, 0, "write ret %d", ret);
|
|
|
|
ret = eventfd_read(fd, &val);
|
|
zassert_equal(ret, 0, "read ret %d", ret);
|
|
zassert_equal(val, 2*TESTVAL, "val == %d, expected %d", val, TESTVAL);
|
|
|
|
/* eventfd shall block on subsequent reads */
|
|
|
|
event = POLLIN;
|
|
ret = is_blocked(fd, &event);
|
|
zassert_equal(ret, 1, "eventfd not blocked after read");
|
|
}
|
|
|
|
void eventfd_poll_set_common(int fd)
|
|
{
|
|
eventfd_t val = 0;
|
|
short event;
|
|
int ret;
|
|
|
|
event = POLLIN;
|
|
ret = is_blocked(fd, &event);
|
|
zassert_equal(ret, 0, "eventfd is blocked with initval != 0");
|
|
|
|
ret = eventfd_read(fd, &val);
|
|
zassert_equal(ret, 0, "read ret %d", ret);
|
|
zassert_equal(val, TESTVAL, "val == %d", val);
|
|
|
|
event = POLLIN;
|
|
ret = is_blocked(fd, &event);
|
|
zassert_equal(ret, 1, "eventfd is not blocked after read");
|
|
}
|
|
|
|
static struct eventfd_fixture efd_fixture;
|
|
|
|
static void *setup(void)
|
|
{
|
|
efd_fixture.fd = -1;
|
|
return &efd_fixture;
|
|
}
|
|
|
|
static void before(void *arg)
|
|
{
|
|
struct eventfd_fixture *fixture = arg;
|
|
|
|
fixture->fd = eventfd(0, 0);
|
|
zassert_true(fixture->fd >= 0, "eventfd(0, 0) failed: %d", errno);
|
|
}
|
|
|
|
static void after(void *arg)
|
|
{
|
|
struct eventfd_fixture *fixture = arg;
|
|
|
|
close(fixture->fd);
|
|
fixture->fd = -1;
|
|
}
|
|
|
|
ZTEST_SUITE(eventfd, NULL, setup, before, after, NULL);
|