selftests: ntsync: Add some tests for auto-reset event state.

Test event-specific ioctls NTSYNC_IOC_EVENT_SET, NTSYNC_IOC_EVENT_RESET,
NTSYNC_IOC_EVENT_PULSE, NTSYNC_IOC_EVENT_READ for auto-reset events, and
waiting on auto-reset events.

Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
Link: https://lore.kernel.org/r/20241213193511.457338-24-zfigura@codeweavers.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Elizabeth Figura 2024-12-13 13:35:04 -06:00 committed by Greg Kroah-Hartman
parent d2083b5f51
commit b4e4dd5d2f

View File

@ -426,6 +426,62 @@ TEST(manual_event_state)
close(fd);
}
TEST(auto_event_state)
{
struct ntsync_event_args event_args;
__u32 index, signaled;
int fd, event, ret;
fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
ASSERT_LE(0, fd);
event_args.manual = 0;
event_args.signaled = 1;
event = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
EXPECT_LE(0, event);
check_event_state(event, 1, 0);
signaled = 0xdeadbeef;
ret = ioctl(event, NTSYNC_IOC_EVENT_SET, &signaled);
EXPECT_EQ(0, ret);
EXPECT_EQ(1, signaled);
check_event_state(event, 1, 0);
ret = wait_any(fd, 1, &event, 123, &index);
EXPECT_EQ(0, ret);
EXPECT_EQ(0, index);
check_event_state(event, 0, 0);
signaled = 0xdeadbeef;
ret = ioctl(event, NTSYNC_IOC_EVENT_RESET, &signaled);
EXPECT_EQ(0, ret);
EXPECT_EQ(0, signaled);
check_event_state(event, 0, 0);
ret = wait_any(fd, 1, &event, 123, &index);
EXPECT_EQ(-1, ret);
EXPECT_EQ(ETIMEDOUT, errno);
ret = ioctl(event, NTSYNC_IOC_EVENT_SET, &signaled);
EXPECT_EQ(0, ret);
EXPECT_EQ(0, signaled);
ret = ioctl(event, NTSYNC_IOC_EVENT_PULSE, &signaled);
EXPECT_EQ(0, ret);
EXPECT_EQ(1, signaled);
check_event_state(event, 0, 0);
ret = ioctl(event, NTSYNC_IOC_EVENT_PULSE, &signaled);
EXPECT_EQ(0, ret);
EXPECT_EQ(0, signaled);
check_event_state(event, 0, 0);
close(event);
close(fd);
}
TEST(test_wait_any)
{
int objs[NTSYNC_MAX_WAIT_COUNT + 1], fd, ret;