mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
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:
parent
d2083b5f51
commit
b4e4dd5d2f
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user