From: Elizabeth Figura <zfigura@codeweavers.com>
To: Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jonathan Corbet <corbet@lwn.net>, Shuah Khan <shuah@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-api@vger.kernel.org,
wine-devel@winehq.org, "André Almeida" <andrealmeid@igalia.com>,
"Wolfram Sang" <wsa@kernel.org>,
"Arkadiusz Hiler" <ahiler@codeweavers.com>,
"Peter Zijlstra" <peterz@infradead.org>,
"Andy Lutomirski" <luto@kernel.org>,
linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org,
"Randy Dunlap" <rdunlap@infradead.org>,
"Ingo Molnar" <mingo@redhat.com>, "Will Deacon" <will@kernel.org>,
"Waiman Long" <longman@redhat.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Elizabeth Figura" <zfigura@codeweavers.com>
Subject: [PATCH v6 08/28] ntsync: Introduce NTSYNC_IOC_EVENT_RESET.
Date: Mon, 9 Dec 2024 12:58:44 -0600 [thread overview]
Message-ID: <20241209185904.507350-9-zfigura@codeweavers.com> (raw)
In-Reply-To: <20241209185904.507350-1-zfigura@codeweavers.com>
This corresponds to the NT syscall NtResetEvent().
This sets the event to the unsignaled state, and returns its previous state.
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
---
drivers/misc/ntsync.c | 24 ++++++++++++++++++++++++
include/uapi/linux/ntsync.h | 1 +
2 files changed, 25 insertions(+)
diff --git a/drivers/misc/ntsync.c b/drivers/misc/ntsync.c
index e46dd795370a..092133699193 100644
--- a/drivers/misc/ntsync.c
+++ b/drivers/misc/ntsync.c
@@ -559,6 +559,28 @@ static int ntsync_event_set(struct ntsync_obj *event, void __user *argp)
return 0;
}
+static int ntsync_event_reset(struct ntsync_obj *event, void __user *argp)
+{
+ struct ntsync_device *dev = event->dev;
+ __u32 prev_state;
+ bool all;
+
+ if (event->type != NTSYNC_TYPE_EVENT)
+ return -EINVAL;
+
+ all = ntsync_lock_obj(dev, event);
+
+ prev_state = event->u.event.signaled;
+ event->u.event.signaled = false;
+
+ ntsync_unlock_obj(dev, event, all);
+
+ if (put_user(prev_state, (__u32 __user *)argp))
+ return -EFAULT;
+
+ return 0;
+}
+
static int ntsync_obj_release(struct inode *inode, struct file *file)
{
struct ntsync_obj *obj = file->private_data;
@@ -584,6 +606,8 @@ static long ntsync_obj_ioctl(struct file *file, unsigned int cmd,
return ntsync_mutex_kill(obj, argp);
case NTSYNC_IOC_EVENT_SET:
return ntsync_event_set(obj, argp);
+ case NTSYNC_IOC_EVENT_RESET:
+ return ntsync_event_reset(obj, argp);
default:
return -ENOIOCTLCMD;
}
diff --git a/include/uapi/linux/ntsync.h b/include/uapi/linux/ntsync.h
index 36d903521bbe..7fdf79729b20 100644
--- a/include/uapi/linux/ntsync.h
+++ b/include/uapi/linux/ntsync.h
@@ -52,5 +52,6 @@ struct ntsync_wait_args {
#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
+#define NTSYNC_IOC_EVENT_RESET _IOR ('N', 0x89, __u32)
#endif
--
2.45.2
next prev parent reply other threads:[~2024-12-09 19:03 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-09 18:58 [PATCH v6 00/28] NT synchronization primitive driver Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 01/28] ntsync: Introduce NTSYNC_IOC_WAIT_ANY Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 02/28] ntsync: Introduce NTSYNC_IOC_WAIT_ALL Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 03/28] ntsync: Introduce NTSYNC_IOC_CREATE_MUTEX Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 04/28] ntsync: Introduce NTSYNC_IOC_MUTEX_UNLOCK Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 05/28] ntsync: Introduce NTSYNC_IOC_MUTEX_KILL Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 06/28] ntsync: Introduce NTSYNC_IOC_CREATE_EVENT Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 07/28] ntsync: Introduce NTSYNC_IOC_EVENT_SET Elizabeth Figura
2024-12-09 18:58 ` Elizabeth Figura [this message]
2024-12-09 18:58 ` [PATCH v6 09/28] ntsync: Introduce NTSYNC_IOC_EVENT_PULSE Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 10/28] ntsync: Introduce NTSYNC_IOC_SEM_READ Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 11/28] ntsync: Introduce NTSYNC_IOC_MUTEX_READ Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 12/28] ntsync: Introduce NTSYNC_IOC_EVENT_READ Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 13/28] ntsync: Introduce alertable waits Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 14/28] selftests: ntsync: Add some tests for semaphore state Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 15/28] selftests: ntsync: Add some tests for mutex state Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 16/28] selftests: ntsync: Add some tests for NTSYNC_IOC_WAIT_ANY Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 17/28] selftests: ntsync: Add some tests for NTSYNC_IOC_WAIT_ALL Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 18/28] selftests: ntsync: Add some tests for wakeup signaling with WINESYNC_IOC_WAIT_ANY Elizabeth Figura
2024-12-17 19:31 ` kernel test robot
2024-12-09 18:58 ` [PATCH v6 19/28] selftests: ntsync: Add some tests for wakeup signaling with WINESYNC_IOC_WAIT_ALL Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 20/28] selftests: ntsync: Add some tests for manual-reset event state Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 21/28] selftests: ntsync: Add some tests for auto-reset " Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 22/28] selftests: ntsync: Add some tests for wakeup signaling with events Elizabeth Figura
2024-12-09 18:58 ` [PATCH v6 23/28] selftests: ntsync: Add tests for alertable waits Elizabeth Figura
2024-12-09 18:59 ` [PATCH v6 24/28] selftests: ntsync: Add some tests for wakeup signaling via alerts Elizabeth Figura
2024-12-09 18:59 ` [PATCH v6 25/28] selftests: ntsync: Add a stress test for contended waits Elizabeth Figura
2024-12-09 18:59 ` [PATCH v6 26/28] maintainers: Add an entry for ntsync Elizabeth Figura
2024-12-09 18:59 ` [PATCH v6 27/28] docs: ntsync: Add documentation for the ntsync uAPI Elizabeth Figura
2024-12-09 18:59 ` [PATCH v6 28/28] ntsync: No longer depend on BROKEN Elizabeth Figura
2024-12-12 4:52 ` kernel test robot
2024-12-12 7:18 ` Arnd Bergmann
2024-12-09 20:24 ` [PATCH v6 00/28] NT synchronization primitive driver Arnd Bergmann
2024-12-09 22:08 ` Elizabeth Figura
2024-12-12 12:01 ` Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241209185904.507350-9-zfigura@codeweavers.com \
--to=zfigura@codeweavers.com \
--cc=ahiler@codeweavers.com \
--cc=andrealmeid@igalia.com \
--cc=arnd@arndb.de \
--cc=boqun.feng@gmail.com \
--cc=corbet@lwn.net \
--cc=gregkh@linuxfoundation.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=longman@redhat.com \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rdunlap@infradead.org \
--cc=shuah@kernel.org \
--cc=will@kernel.org \
--cc=wine-devel@winehq.org \
--cc=wsa@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.